A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘源 中级黑马   /  2012-8-15 10:33  /  1323 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘源 于 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这个属性啊。
"问题已解决"

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
问题一解释:
注解可以加在一个类的各种地方上,这点是由声明该注解时@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",当你程序运行时可以用反射获取到该注解,然后进行时间的格式化输出。

评分

参与人数 1技术分 +1 收起 理由
田建 + 1 加油!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马