java - 如何从TypeMirror对象获取类型描述符(JNI风格)String(注解处理)

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

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

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

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

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

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

最佳答案

我意识到这已经有将近十年的历史了,但我已经编写了一个库来为 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);

关于java - 如何从TypeMirror对象获取类型描述符(JNI风格)String(注解处理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12657112/

相关文章:

java - 从扩展 Java 注释处理器中泛型类型的类型中提取具体类型参数

java - 引用持久性并传递可变数量的数组

java - 两次写入工作簿时出现 org.apache.xmlbeans.impl.values.XmlValueDisconnectedException

java - 如何导入预构建的 *.so 库并从新项目中调用它?

java - Android包名中包含下划线调用JNI函数

java - C++ 中的 JNI CallIntMethod 返回错误值

Java 泛型 : Accessing Generic Type at runtime

java - 为什么 GWT 使用代码生成器而不是注释处理器?

java - 使用 Spring 的 REST Api 实现

java - 如何找到一个月中的星期几