我想得到一个像这样的字符串:
Ljava/lang/Class;.getName()Ljava/lang/String;
(JNI样式类型/方法描述,或称为类型描述符)
来自javax.lang.model.type.TypeMirror
的AnnotationProcessor
物体。是否有任何Convenience方法或库,它解析TypeMirror
对象并产生如上所示的字符串?
我想使用String从类型描述符字符串构造一个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);
打开控制台,转到已编译的类f.e. :cd ./build/classes。然后输入javap -s NameOfYourCompiledClass.class(在控制台中),你就会得到你的描述符。对于您的情况,我将使用您的自定义类扩展此TypeMirror类,重载所有方法,编译项目并按照下面的说明为您的新类