了解注解及java提供的几个基本注解
非常重要
Annotation 注解
@SuppressWarnings
指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译警告
@Deprecated
在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告
@Override
表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注释但没有重写超类方法,则编译器会生成一条错误信息。
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记。没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上
看java.lang包,可以看到JDK中提供的最基本的annotiation
注解的应用结构图
注解类---->应用了“注解类”的类----->对“应用了注解类的类”进行反射操作的类
注解类就相当于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得先准备好了这个注解类。就想你要调用某个类,得先有开发好这个类。
@Retention元注解 标注注解的生命周期
RetetionPolicy.SOURCE,RetetionPolicy.CLASS,RetetionPolicy.RUNTIME分别对应源文件,class文件,内存中的字节码
@Target 表示注解的作用域
Interface Type 1.5 新东西
注解的属性
数组类型的属性
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=@MetaAbbotation("yyy"));
可以认为上面这个@MyAnnotation是MyAnnotation类的一个实例对象,同样的道理,可以认为上面这个@MetaAnnotation是MetaAnnotation类的一个实例对象。
以上是我在学习注解的时候的笔记 ,这部分自己理解的也不是很好 ,不会用自己的语言。
顺便说一句,注解和注释是两个概念吧,楼上这个是怎么回事? |