我需要使我的代码适应更严格的 Java 7 验证程序,并且必须visitFrame
在我的 MethodNode 中添加调用(我正在使用树 API)。我找不到有关如何Type
映射到Object[]
visitFrame 中使用的 s 的任何信息,所以请在这里帮助我...
这是我到目前为止所拥有的:
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
and METHOD
,但我不确定,我一点也不知道是什么TOP
。