我如何在BCEL检查这个..
说java中的字节码是
newarray 10 (int)
我已经为访客做了这个
instruction instanceof NEWARRAY
public boolean visit(Instruction instr) {
return instr instanceof NEWARRAY;
}
但我还必须检查新阵列是否为int[]
如何在BCEL中查看?
我试过这个
&& ((NEWARRAY) instr).getType() == Type.INT;
很好
return instr instanceof NEWARRAY && ((NEWARRAY) instr).getType() == Type.INT;
但你可以看到上面的^不起作用,因为它永远不会是int
..但是int[]
但Type.INT
只是int
..而不是int[]
..
我如何表示int[]
类型?
我正在阅读BCEL源代码,NEWARRAY.getType()返回此..
/**
* @return type of constructed array
*/
public final Type getType() {
return new ArrayType(BasicType.getType(type), 1);
}
正如你所看到的,它会返回一个Type
类,所以..看着
http://commons.apache.org/bcel/apidocs/org/apache/bcel/generic/Type.html
http://commons.apache.org/bcel/apidocs/org/apache/bcel/generic/ArrayType.html
ARRAY Type
没有任何int[]
个。
答案 0 :(得分:1)
我认为我不太了解你的问题,但是这个怎么样:
if(instr.getClass().isArray()) return instr instanceof NEWARRAY[];
else return instr instanceof NEWARRAY;