/ / JAVA BCEL NEWARRAY getType Basic Type - java, байт-код, bcel

JAVA BCEL NEWARRAY getType Basic Type - java, bytecode, bcel

Як мені в 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[]..

Як я представляю Type int[]?

Я читав вихідний код BCEL, і NEWARRAY.getType () повертає це ..

     /**
* @return type of constructed array
*/
public final Type getType() {
return new ArrayType(BasicType.getType(type), 1);
}

Як ви бачите, він повертає a 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"s для ARRAY int[].

Відповіді:

1 для відповіді № 1

Я не думаю, що добре розумію ваше запитання, але як щодо цього:

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