我需要將我的代碼調整爲更嚴格的Java 7驗證程序,並且必須在我的MethodNode(我正在使用樹API)中添加visitFrame
調用。我無法找到如何Type
映射到visitFrame使用的Object[]
小號的任何信息,所以請幫我在這裏...什麼是從Type.getSort()到visitFrame(...)中的本地和堆棧數組的映射?
這是我到目前爲止有:
private Object getFrameType(Type type) {
switch (type.getSort()) {
case Type.BOOLEAN:
case Type.CHAR:
case Type.BYTE:
case Type.SHORT:
case Type.INT:
return Opcodes.INTEGER;
case Type.LONG:
return Opcodes.LONG;
case Type.FLOAT:
return Opcodes.FLOAT;
case Type.DOUBLE:
return Opcodes.DOUBLE;
case Type.OBJECT:
case Type.ARRAY:
return type.getInternalName();
}
throw new RuntimeException(type + " can not be converted to frame type");
}
我會想知道的是:Type.VOID
和Type.METHOD
是什麼? 我何時需要Opcodes.TOP
,Opcodes.NULL
和Opcodes.UNINITIALIZED_THIS
?
我猜UNINITIALIZED_THIS
僅在構造函數中使用,我大概可以忽略VOID
和METHOD
,但我不知道,我沒有絲毫的想法是什麼TOP
是。
我正在尋找這樣的方法,謝謝:-),你有沒有修改它? –