gpt4 book ai didi

java - 使用 Apache Bcel 获取注释名称

转载 作者:行者123 更新时间:2023-12-01 17:18:37 25 4
gpt4 key购买 nike

我使用此代码来获取 Java 类注释:

JavaClass jclas = new ClassParser("src\\test\\org\\poc\\TestClass.class").parse();

ClassGen cg = new ClassGen(jclas);

AnnotationEntryGen[] attributes = cg.getAnnotationEntries();

for (AnnotationEntryGen attribute : attributes) {
System.out.println("attribute: " + attribute);
if(attribute.getTypeName().contains("Fix")) {
// Do something
}
}

但是当我打印 attribute.getTypeName() 时,我得到 Lorg/annotations/Fix。注解名称为@Fix(..)你知道我怎样才能只得到名字吗?

最佳答案

像“Lorg/annotations/Fix”这样的字符串是一个字段描述符。Java有many different formats用于类名。

您可以使用 Signatures class 在名称的不同格式之间进行转换reflection-util package的.

The annotation name is @Fix(..).

该术语不正确;您已经展示了如何在 Java 源代码中编写完整的注释,但这不是它的名称。 getTypeName() 确实返回了它的名称(以字段描述符格式)。

如果您想要注释的元素(当用 Java 源代码编写注释时,这些元素出现在括号之间),请使用 getValues() 。您可能还会发现toString()有用。

关于java - 使用 Apache Bcel 获取注释名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61342103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com