我正在使用ASM(一种字节码修改库),它提供了访问字节码命名格式的类型名称,例如String字段的描述为:Ljava/lang/String。
我需要为某些类调用Class.forName,但我需要类型名称的源代码形式,例如java.lang.String。
有没有一种方法可以将内部名称转换为Java源代码格式?
我正在使用ASM(一种字节码修改库),它提供了访问字节码命名格式的类型名称,例如String字段的描述为:Ljava/lang/String。
我需要为某些类调用Class.forName,但我需要类型名称的源代码形式,例如java.lang.String。
有没有一种方法可以将内部名称转换为Java源代码格式?
您可以使用{{link1:org.objectweb.asm.Type.getInternalName(java.lang.Class)
}}。
Class.forName()
可接受的参数,显然此时他并没有Class
对象。 - Stephen CType.getObject(className).getClassName()
。 - FlightOfStairs使用
org.objectweb.asm.Type.getType(typeDescriptor).getClassName()
Ljava/lang/Deprecated;
,返回java.lang.Deprecated
。
通过@FlightOfStairs的提示找到了这个信息,他指出了正确的类。