如何从TypeMirror对象获取类型描述符(JNI样式)字符串(注释处理)

时间:2012-09-29 22:33:58

标签: java java-native-interface annotation-processing typedescriptor

我想得到一个像:

的字符串
Ljava/lang/Class;.getName()Ljava/lang/String;

(JNI样式类型/方法描述,或称为类型描述符)

来自javax.lang.model.type.TypeMirror中的AnnotationProcessor对象。是否有任何Convenience方法或库,它解析TypeMirror对象并生成如上所示的字符串?

我想用String来构造一个 来自类型描述符字符串的org.objectweb.asm.Type对象。

2 个答案:

答案 0 :(得分:0)

我意识到这已经有将近十年的历史了,但是我已经编写了一个库来向ASM库添加TypeMirror / Element支持。参见此处:https://github.com/soabase/asm-mirror-descriptor-使用此库,您现在可以执行以下操作:

MirrorClassReader reader = new MirrorClassReader(processingEnv, element);
reader.accept(myClassVisitor);  // standard ASM ClassVisitor

String signature = SignatureMirrorType.getSignature(processingEnv, element);

答案 1 :(得分:-1)

打开控制台,转到已编译的类f.e. :cd ./build/classes。然后输入javap -s NameOfYourCompiledClass.class(在控制台中),你就可以得到你的描述符了。根据您的情况,我将使用您的自定义类扩展此TypeMirror类,重载所有方法,编译项目并按照以下说明为您的新类