jdk1.5的新特性枚举和注解
了解注解
AnnotationTest(类名)不可以写为TestAnnotation
类名往往是名词,方法名一般是动词。
类名、属性名一般是名词(名词或者是形容词+名词)
方法名一般是动词或者是动词+名词
以上是编码习惯
@SuperessWarnings("deprecation")—>对过时的方法不提示删除线,不提示警告
注解又来告诉开发工具或者javac编译器,向它传递一种信息,作为一个标记,一个注解就是一个类。用注解就是创建了这个注解类的实例对象
我自己的类一个方法不想用了,有新的方法了,可以用注解@Deprecated表示这个方法已经过时了,尽量不要用
@Override,表示对父类方法的覆盖
总结:
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上.
看java.lang包,可以看到jdk中提供的最基本的annotation
了解如何运用注解
注解就相当于一个你的源程序中要调用的一个类,要在源程序中应用某个注解,得先准备好了这个注解类。就像你要调用某个类,得先有开发好的这个类
怎么写注解,像写接口,前面加@
注解类
@Retention(RetentionPolicy.RUNTION)
@Target(ElementType.METHOD)
//@Target({ElementType.METHOD, ElementType.TYPE})
@interface A {
}
应用了“注解类”的类
@A
Class B {
}
对“应用了注解类的类”进行反射操作的类
Class C{
B.class.inAnnotionPresent(A.class);
A a = (A)B.class.getAnnotion(A.class);
}
main方法不属于任何类,只是找个容身之地。
元注解、元数据、元信息
注解的注解是元注解(@Retention)
当我在java源程序上加个注解,java源程序由javac编译。javac在编译的时候可能需要把注解去掉->编译成.class文件(也可能保留注解)->由类加载器把class文件加载到内存中(编程字节码)
@Retention默认的是CLASS阶段
@Override保留到SOURCE阶段
@SuppressWarning是SOURCE阶段
@Deprecation是RUNTIME阶段
为注解添加属性
什么是注解的属性
一个注解相当于一个胸牌,如果你胸前贴了胸牌,就是传智博客的学生,否则,就不是。如果还想区分出是传智博客哪个班的学生,这时候可以为胸牌在增加一个属性进行区分。加了属性标记效果为:@MyAnnotation(color="red")
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation {
String color() default "blue";
}
注解很像接口,注解的属性就相当于方法
用的时候可以@MyAnnotation(color="red")
调用的时候为annotation.color();
如果注解类中只有
String value();方法
那么用的时候就可以@MyAnnotation("red")
属性类型可以是数组
int[] arrayAttr() default {3, 4, 5};
调用 @MyAnnotation(arrayAttr={1,2,3})
获取注解信息annotation.arrayAttr();
int[]和String[]的区别
int[]是object不是object[]
数组中只有一个元素可以不用加{}
属性类型也可以是枚举
属性类型还可以是注解类型MetaAnnotation->(元注解)
MetaAnnotation annotationAttr() default @MetaAnnotation("hello")
调用
@MyAnnotation(annotationAttr=@MetaAnnotation("hello"))
属性还可以是基本类型、String类型、Class类型
转载请注明:学时网 » java1.5新特性注解->介绍讲解