我正在使用google code pro Analatics来测量代码覆盖率。
源代码
public class StackArray<T> implements Stack<T> {
private int top;
private T[] elements;
public StackArray(Class<T> type, int size) {
top = -1;
elements = (T[]) Array.newInstance(type, size);
}
//Other stack related methods
}生成的类文件
import com.vladium.emma.rt.RT;
import java.lang.reflect.Array;
// Referenced classes of package ds.stack:
// Stack
public class StackArray implements Stack {
private int top;
private Object elements[];
private static final int $VRc[][]; /* synthetic field */
private static final long serialVersionUID = 0x927be770ed420794L; /* synthetic field */
public StackArray(Class type, int size)
{
int ai[] = ($VRc != null ? $VRc : $VRi())[0];
super();
top = -1;
elements = (Object[])Array.newInstance(type, size);
ai[0] = ai[0] + 1;
}
}我的问题是,在构造函数中,在this或super之前如何允许这一行
int ai[] = ($VRc != null ? $VRc : $VRi())[0];发布于 2013-09-01 15:05:53
对super()或this()的限制只能作为构造函数中的第一条指令,这是由Java编译器施加的限制,而不是字节码/对象类。
“生成的类文件”要么是在常规Java编译器下不能编译的对象类的反编译,要么是与允许这种构造的修改后的Java兼容。在这两种情况下,代码看起来都是99%的Java源文件,但事实并非如此。
https://stackoverflow.com/questions/18555968
复制相似问题