2010-04-07 90 views
7

我开始大量使用Java注释。一个例子是采用注释方法并将它们转换为基于“telnet”的命令行命令。我通过解析注释并钩入jopt选项解析器来实现。Java注释 - 是否有任何助手库来读取/处理注释?

但是,我手动做了很多这些。例如,方法参数注释处理..

Method method = ... //; 
Class[] parameters = method.getParamterTypes(); 
Annotation[][] annotations = method.getparamterAnnotations(); 

for(int i = 0; i < parameters.length; i++) 
{ 
    // iterate through the annotation , see if each param has specific annotation ,etc. 
} 

这是非常多余和乏味的。

是否有帮助处理注释的开源项目?

回答

6

我们用它来查找特定注释:

for (Field field : clazz.getDeclaredFields()) { 
    if (field.isAnnotationPresent(MyAnnotation.class)) { 
     field.setAccessible(true); 
     String fieldName = field.getName(); 
     Object fieldValue = field.get(myObj); 
     field.setAccessible(false); 
    } 
} 
0

不完全相信这有助于你需要的注释,但我建议你看看我的Annox项目。这里是API

随着Annox就可以了,例如,阅读批注到

  • XAnnotation
  • XAnnotationField
  • 对XPackage
  • XClass
  • XConstructor
  • XField
  • XMethod
  • XParameter

结构可能更适合您的需求。您可以从XML读取任意注释,在其上运行访问者等等。

1

任何项目将包含完全相同的样板代码。你为什么不制造自己的工具?

我敢肯定,你可以使用ASM:

+0

我可以写我自己的工具帮手。但我不想重新发明轮子。至于ASM,我使用CGLIB(使用ASM)来创建动态代理类。 – mjlee 2010-04-07 21:06:33

+0

您可以将自己的实用程序编写为开源项目,以便我们可以帮助并重用它! :-) – 2012-05-04 16:01:04

+0

第一个链接已损坏 – Artem 2014-07-10 23:50:18