Как мне проверить это в BCEL ..
Скажем, байт-код в Java
newarray 10 (int)
Я уже сделал это для посетителя
instruction instanceof NEWARRAY
public boolean visit(Instruction instr) {
return instr instanceof NEWARRAY;
}
Но я также должен проверить, является ли 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
нет никаких Type
для ARRAY int[]
.