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

问题描述 投票:5回答:2

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

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

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

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

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

java java-native-interface annotation-processing typedescriptor
2个回答
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
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.