黑马程序员技术交流社区
标题:
为注解增加属性出现错误
[打印本页]
作者:
党巾水
时间:
2012-7-3 13:31
标题:
为注解增加属性出现错误
本帖最后由 刘馨琪 于 2012-7-5 14:19 编辑
1.png
(19.89 KB, 下载次数: 21)
下载附件
2012-7-3 13:34 上传
这个注解类里有arr()属性,然后引用的时候对其进行设置:
下图设置正常:
5.png
(10.28 KB, 下载次数: 45)
下载附件
2012-7-3 13:35 上传
下图设置出现问题:
即使把图一中的int[] arr()设置成long[] arr(),问题依旧。请问是什么原因呢?谢谢!
作者:
党巾水
时间:
2012-7-4 10:14
无人回答吗?
作者:
周素强
时间:
2012-7-4 13:28
本帖最后由 周素强 于 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-4 16:10
数值范围越界了,int的范围2的-31次方2的31次方减1,最大也就是10位,你的数已经是11位了
改成long[] arr() 也不行是因为java不会自动的把一个很大的整数常量当做long来处理,默认都是int,在后面加上“L”后缀就可以了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2