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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 党巾水 中级黑马   /  2012-7-3 13:31  /  1763 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘馨琪 于 2012-7-5 14:19 编辑



这个注解类里有arr()属性,然后引用的时候对其进行设置:
下图设置正常:



下图设置出现问题:



即使把图一中的int[] arr()设置成long[] arr(),问题依旧。请问是什么原因呢?谢谢!

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

3 个回复

倒序浏览
无人回答吗?
回复 使用道具 举报
本帖最后由 周素强 于 2012-7-4 13:30 编辑

为注解添加高级属性
1,数组类型的属性:
  Int[] arrayAttr default{1,2,3};
  @MyAnnotation(arrayAttr={2,3,4})
  如果数组属性中只有一个元素,这时候属性值部分可以省略大括号
2,枚举类型的属性:
  EnumTest.TrafficLamp lamp();
  @MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN)
3,注解类型的属性:
  MetaAnnotation annotationAttr() default @MetaAnnotation("xxx");
  @MyAnnotation(annotationAttr=@MetaAnnotation("ttttt"))
可以认为上面这个@MyAnnotation是MyAnnotation类的一个实例对象,同样的道理也可以认为上面这个@MetaAnnotation是MetaAnnotation类的一个实例对象,调用代码如下:
  MetaAnnotation ma = myAnnotation.annotationAttr();
  System.out.println(ma.value());

可能是因为在注解类中定义数组属性时多了()

点评

挺详细,谢谢  发表于 2012-7-5 14:17
回复 使用道具 举报
数值范围越界了,int的范围2的-31次方2的31次方减1,最大也就是10位,你的数已经是11位了
改成long[] arr() 也不行是因为java不会自动的把一个很大的整数常量当做long来处理,默认都是int,在后面加上“L”后缀就可以了

点评

明白了,谢谢!我加了L,可以了。  发表于 2012-7-5 14:11
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马