注解入门
- Annotation是从JDK1.5开始引入的技术;
Annotation的作用
- 不是程序本身,可以对程序作出解释(这一点和注释comment没什么区别)
- 可以被其他程序(如:编译器)读取;
Annotation的格式
- 注解是以"@注解名字"在代码中存在的,还可以添加一些参数值,例如:
- @SuppressWarnings(value="unchecked")
- 重写的注解 @Override
Annotation在哪里使用?
- 可以附加在package、class、method、field等上面;
- 相当于给他们增加了额外的辅助信息;
- 我们可以通过反射机制编程实现对这些元数据的访问;
内置注解
@Override
定义在Java.lang.Override
中,此注解只适用于修辞手法,表示一个方法声明打算重写父类的同名的方法;@Deprecated
定义在Java.lang.Deprecated
中,此注解可以用于修饰方法、属性、类等,表示不鼓励IT人员用这样的元素,通常是因为它过时了或者有更好的方法;@SuppressWarnings
- 定义在
Java.lang.SuppressWarnings
中,用来抑制编译时的警告信息; - 与前两个注解不同的是,该注解需要增加一个参数才能正确使用,并且参数都是定义好的,我们根据需要进行选择性使用即可。
@SuppressWarnings("all")
@SuppressWarnings("unchecked")
@SuppressWarnings("value={"unchecked","deprecation"}")
- 定义在
元注解
元注解的作用就是负责注解其他注解;Java定义了4个标准的meta-annotation
类型,它们被用来提供对其他annotation
类型做说明。
这些类型可以在java.lang.annotation
包中可以找到:
@Target
用来描述注解的适用范围(即被描述的注解可以用在哪些地方);@Retention
表示需要在什么级别保存该注解信息,用于描述注解的生命周期,SOURCE<CLASS<RUNTIME
;@Document
说明该注解将被包含在javadoc
中;@Inherited
说明子类可以继承父类的注解 ;
// 测试元注解
public class Test01 {
@MyAnnotation
public void test(){}
}
// 定义一个注解
// Target 表示我们的注解可以用在哪些地方
@Target(value= {ElementType.METHOD,ElementType.FIELD})
// Retention 表示我们的注解,在什么地方有效Runtime>Class>Source
@Retention(value = RetentionPolicy.RUNTIME)
// Documented 表示是否将我们的注解生成在Javadoc中
@Documented
// Inherited 表示子类可以继承父类的注解
@Inherited
@interface MyAnnotation{}