JAVA BCEL NEWARRAY getType基本类型

时间:2011-08-16 04:25:22

标签: java bytecode bcel

我如何在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[]个。

1 个答案:

答案 0 :(得分:1)

我认为我不太了解你的问题,但是这个怎么样:

if(instr.getClass().isArray()) return instr instanceof NEWARRAY[];
else return instr instanceof NEWARRAY;