5

我想得到一个像这样的字符串:

Ljava/lang/Class;.getName()Ljava/lang/String;

(JNI 风格的类型/方法描述,或称为类型描述符)

从 中的一个javax.lang.model.type.TypeMirror对象AnnotationProcessor。是否有任何 Convenience 方法或库可以解析TypeMirror对象并生成像上面这样的字符串?

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

4

2 回答 2

1

我意识到这已经有将近十年的历史了,但我已经编写了一个库来将 TypeMirror/Element 支持添加到 ASM 库中。请参见此处: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);
于 2019-03-21T21:59:13.787 回答
-1

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

于 2016-04-29T13:19:11.130 回答