黑马程序员技术交流社区

标题: 关于注解属性使用问题 [打印本页]

作者: 刘源    时间: 2012-8-15 10:33
标题: 关于注解属性使用问题
本帖最后由 刘源 于 2012-8-16 17:05 编辑

package jichujiaqiang;
@ItCastAnnotation("abc")
public class INDemo {
        @ItCastAnnotation("ccc")
        public static void main(String[] args) {
                ItCastAnnotation annotation = (ItCastAnnotation)AnnotationTest.class.getAnnotation(ItCastAnnotation.class);
                System.out.println(annotation.value());
        }
}
问题一:为什么打印结果是abc,而不是ccc。
问题二:我如何使用注解上CCC这个属性啊。
"问题已解决"

作者: 陈鑫    时间: 2012-8-15 14:17
问题一解释:
注解可以加在一个类的各种地方上,这点是由声明该注解时@Target来决定的
@Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括:  
         ElemenetType.CONSTRUCTOR 构造器声明  
         ElemenetType.FIELD 域声明(包括 enum 实例)  
          ElemenetType.LOCAL_VARIABLE 局部变量声明  
          ElemenetType.METHOD 方法声明  
          ElemenetType.PACKAGE 包声明  
          ElemenetType.PARAMETER 参数声明  
          ElemenetType.TYPE 类,接口(包括注解类型)或enum声明
因此当你想要获取注解信息时,需要根据该注解的作用位置来获取。
楼主问题中(ItCastAnnotation)AnnotationTest.class.getAnnotation(ItCastAnnotation.class)
是获取的类注解。
如果想要获取方法上的注解需要这样写AnnotationTest.class.getMethod("XXX").getAnnotations();
另外 main()方法是入口方法,在其上面加注解是否有意义,这个我也不太清楚。坐等高手解答。
所以你再声明个业务方法,在上面加注解就能获取到了。
问题二解释:
  注解使用的问题,是按照你自己的业务需求进行开发的。在程序中添加的注解,可以在编译时刻或是运行时刻来进行处理。
举个例子,数据库有一张表,有date字段,对应的javabean中的date属性。
那么你可以在属性date上加上注解"yyyy-mm-dd",当你程序运行时可以用反射获取到该注解,然后进行时间的格式化输出。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2