开发者

Java Annotations - Is there any helper library to read/process annotations?

开发者 https://www.devze.com 2022-12-26 15:24 出处:网络
I start to use Java annotations heavily.One example is taking method with annotations and converting them into \'telnet\'-based command-line command.I do this by parsing annotations and hook into jopt

I start to use Java annotations heavily. One example is taking method with annotations and converting them into 'telnet'-based command-line command. I do this by parsing annotations and hook into jopt option parser.

However, I do a lot of these manually. For example, Method parameter annotation processing..

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.
}

It is very redundant and tedious.

Is there any opensource project that help processing Annotations?


We use this to look for a specific annotation:

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);
    }
}


Not exactly sure which help do you need for annotations, but I'd suggesting that you take a look at my Annox project. Here's API.

With Annox you can, for instance, read annotations into

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

structures which might better suit your needs. You can read arbitrary annotations from XML, run visitors on them and so on.


Any project would contain the exact same boilerplate code. Why don't you make your own utility?

I'm sure you could use ASM:

  • http://www.ibm.com/developerworks/java/library/j-cwt06075/
  • http://asm.ow2.org/
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号