技术开发 频道

J2SE5.0中新特性:注释

【IT168 技术文档】
    五、如何使用反射读取注释


    前面讨论了如何自定义注释。但是自定义了注释又有什么用呢?这个问题才是J2SE5.0提供注释的关键。自定义注释当然是要用的。那么如何用呢?解决这个问题就需要使用java最令人兴奋的功能之一:反射(reflect)。
在以前的JDK版本中,我们可以使用反射得到类的方法、方法的参数以及其它的类成员等信息。那么在J2SE5.0中同样也可以象方法一样得到注释的各种信息。

    在使用反射之前必须使用import java.lang.reflect.* 来导入和反射相关的类。
    如果要得到某一个类或接口的注释信息,可以使用如下代码:

Annotation annotation = TestAnnotation.class.getAnnotation(MyAnnotation.class); 如果要得到全部的注释信息可使用如下语句: Annotation[] annotations = TestAnnotation.class.getAnnotations(); Annotation[] annotations = TestAnnotation.class.getDeclaredAnnotations();
    getDeclaredAnnotations与getAnnotations类似,但它们不同的是getDeclaredAnnotations得到的是当前成员所有的注释,不包括继承的。而getAnnotations得到的是包括继承的所有注释。

    如果要得到其它成员的注释,可先得到这个成员,然后再得到相应的注释。如得到myMethod的注释。
Method method = TestAnnotation.class.getMethod("myMethod", null); Annotation annotation = method.getAnnotation(MyAnnotation.class); 注:要想使用反射得到注释信息,这个注释必须使用 @Retention(RetentionPolicy.RUNTIME)进行注释。
总结
    注释是J2SE5.0提供的一项非常有趣的功能。它不但有趣,而且还非常有用。如即将出台的EJB3.0规范就是借助于注释实现的。这样将使EJB3.0在实现起来更简单,更人性化。还有Hibernate3.0除了使用传统的方法生成hibernate映射外,也可以使用注释来生成hibernate映射。总之,如果能将注释灵活应用到程序中,将会使你的程序更加简洁和强大。
0
相关文章