首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Apache Bcel获取注解名称

使用Apache Bcel获取注解名称
EN

Stack Overflow用户
提问于 2020-04-21 19:08:36
回答 1查看 48关注 0票数 0

我使用下面的代码来获取Java Class注释:

代码语言:javascript
复制
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(..),你知道我怎么才能只得到名字吗?

EN

回答 1

Stack Overflow用户

发布于 2020-04-21 23:32:02

像`"Lorg/annotations/Fix“这样的字符串是一个字段描述符。Java为类名提供了many different formats

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

注释名称为@Fix(..)

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61342103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档