关闭

注解

373人阅读 评论(0) 收藏 举报

注解
Java API中的三种注解:
1.@SupperssWarnings
 @SupperssWarnings("deprecation")//告诉编译工具已知此方法过时,不需再提

示了。
2.@Deprecated
  在定义一个方法时,前面加上@Deprecated//说时这个方法已过时,让只前用到

这个方法的程序继续运行,但告知新的用户使用时注意,尽量不要使用。
3。@Override
  在定义一个方法时,前面加上@Override//告诉编译器,此方法如果是覆盖父类

的方法,如参数不正确,则提示错误。
总结:
    注解相当于一种标记,加了注解就等于打上了某种标记,没加,则等于没有某

种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各

种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包、类

、字段、方法、方法的参数以及局部变量上。

注解就相当于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得

先准备好了这个注解类。就像你要调用某个类,得先有开发好的这个类。

注解的注解称为元注解:
@Retention元注解,有三种取值:RetentionPolicy.SOURCE、

RetentionPolicy.CLASS、RetentionPolicy.RUNTIME;分别对应:java源文件-

>class文件->内存中的字节码。
@Target元注解,默认值为任何元素,设置Target等于ElementType.METHOD.

*什么是注解的属性
    一个注解相当于一个胸牌,如果你胸前贴了胸牌,就是传智播客的学生,否则

,就不是。如果还想区分是哪个班的学生,这时候可以为胸牌再增加一个属性来进

行区分。加了属性的标记效果为:@MyAnnotation(color="red")
*定义基本类型的属性和应用属性
    在注解类中增加String color();
    @MyAnnotation(color="red")//设置注解的属性值
*用反射方式获得注解对应的实例对象后,再通过该对象调用属性对应的方法
    MyAnnotation a=(MyAnnotation)Annotation.class.getAnnotation

(MyAnnotation.class);
    System.out.println(a.color());//得到属性值时,调用的是方法
    可以认为@MyAnnotation是MyAnnotation类的一个实例对象。
*为属性指定缺省值
    String color() default "yellow";
*value属性
    String value() default "zxx";
    如果注解中有一个名称为value的属性,且你只想设置value属性(即其他属性

都采用默认值或者你只有一个value属性),那么可以省略value=部分,例如:
@MyAnnotation("lhm")。


为注解增加高级属性
*数组类型的属性
    int[] arrayAttr() default{1,2,3};
    @MyAnnotation(arrayAttr={2,3,4})
    如果数组属性只有一个元素,这时候属性值部分可以省略大括号。
*枚举类型的属性
    EnumTest.TrafficLamp Lamp();
    @MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN)
*注解类型的属性:
    MetaAnnotation annotationAttr() default @MetaAnnotation("xxxx");
    @MyAnnotation(annotationAttr=@MetaAnnotation("YYY")
    可以认为上面这个@MyAnnotation是MyAnnotation类的一个实例对象,同样的

道理,可以认为上面这个@MetaAnnotation是MetaAnnotation类的一个实例对象,

调用代码如下:
  MetaAnnotation ma=MyAnnotation.annotationAttr();
  System.out.println(ma.value());

枚举和注解都是特殊的类,不能用new创建它们的实例对象,创建枚举的实例对象

就是在其中增加元素。在程序中如何创建出一个注解的实例对象呢?那就是直接用

@放上一个标记即可。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9384次
    • 积分:253
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档