- 从JDK5.0开始,JAVA增加了对元数据(MetaData)的支持,也就是Annotation(注解)。
- Annotation可以像修饰符一样被使用,可以用于修饰包,类,方法,变量,构造器,参数等等的声明,这些信息被保存在Annotation的“name=value”对中。
@author 表明开发该模板的作者
@version 表明该模板的版本
@since 从哪个版本开始增加
@param 对方法中的参数说明
@return 对方法返回值的说明
@exception 对方法可能抛出的异常进行说明
2.3 示例2 :jdk内置的三个基本注解@Override: 限定重写父类方法,该注解只能用于方法
@Deprecated :用于标识所修饰的类或方法已过时
@SuppressWarnings:抑止编译器警告
public class AnnotationTest {
public static void main(String[] args) {
Student student = new Student();
student.eat();
}
}
class Person{
public void eat(){
System.out.println("吃饭了");
}
}
class Student extends Person {
public void eat1() {
System.out.println("开吃");
}
}
如果 没有用@Overrride 重写的方法名可以被修改不报错
2.4自定义注解声明为@interface ,跟接口没有关系
- 访问修饰符必须为public,不写默认为public;
- 该元素的类型只能是基本数据类型、String、Class、枚举类型、注解类型(体现了注解的嵌套效果)以及上述类型的一位数组;
- 该元素的名称一般定义为名词,如果注解中只有一个元素,请把名字起为value(后面使用会带来便利 *** 作);
- ()不是定义方法参数的地方,也不能在括号中定义任何参数,仅仅只是一个特殊的语法;
default
代表默认值,值必须和第2点定义的类型一致;- 如果没有默认值,代表后续使用注解时必须给该类型元素赋值。
元注解用于修饰其他Annotation定义
JDK5.0提供了四个标准的meta-annotattion类型
- Retention 用于指定注解的生命周期 :RetentionPolicy.SOURCE(源文件保留) RetentionPolicy.CLASS(class保留)这是默认值 RetentionPolicy.RUNTIME(运行时保留)只有声明为RUNTIME才可以通过反射获取
- Target 用于指定被修饰的Annocation可以修饰哪些元素
- Documented 表示该元注解所修饰的注解的类被javadoc提取时保留注解,该注解必须为RetentionPolicy.RUNTIME
- Inherited 他修饰的Annotation具有继承性
public static void main(String[] args) {
Class clazz = Student.class;
Annotation[] annotations = clazz.getAnnotations();
for (Annotation annotation : annotations) {
System.out.println(annotation);
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)