一、注解概述
1.定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、
接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素
进行说明,注释。
2.作用分类:
编写文档:通过代码里标识的注解生成文档【例如,生成文档doc文档】
代码分析:通过代码里标识的注解对代码进行分析【例如,注解的反射】
编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【例如,Override】
3.常见注解
1. @author:用来标识作者名
2. @version:用于标识对象的版本号,适用范围:文件、类、方法。
3. @Override :用来修饰方法声明,告诉编译器该方法是重写父类中的方法,如果父类不存在该方法,则编译失败。
4.自定义注解
/* 自定义注解 1.格式 public @interface 注解名称 { 属性集 } 2.分类 (1)空注解: 没有属性集 */ public @interface MyAnno01 { }
/* 自定义注解 1.格式 public @interface 注解名称 { 属性集 } 2.分类 (2)有属性集的注解 属性的定义格式: 数据类型 属性名称(); //没有默认值 数据类型 属性名称() default 默认值; //有默认值,default后面的内容 (3)属性的类型都有哪些? 8种基本类型,String,枚举(不用),Class类型,注解类型 以及以上任意类型的一维数组 int[] */ public @interface MyAnno02 { String name(); int age() default 18; String[] hobbies();//爱好 MyAnno01 anno();//注解类型 }
/* 3.自定义注解使用的注意事项 1.空注解可以直接使用 2.一个注解只能在一个位置上使用一次,一个位置上可以使用多个不同的注解 3.如果注解有属性 ,那么必须给属性赋值才能使用 键值对的方式赋值 属性名=属性值 多个属性,隔开 如果属性是数组类型 并且只有一个属性值 那么{}可以省略 如果多个属性值 {}不能省略 4.如果属性没有默认值 必须赋值 如果有默认值 可以不赋值 5.如果一个注解中 只有一个属性 并且这个属性叫value 那么赋值时可以省略属性名 尤其要注意的-------------- */ public class Demo07AnnotationNotice { @MyAnno01 //@MyAnno01 //同一个位置,只能使用一次 @MyAnno02(name = "少年攻城狮",hobbies = "学习java",anno = @MyAnno01) @MyAnno03("少年") @MyAnno04 public void method() { } }
/* 5.如果一个注解中 只有一个属性 并且这个属性叫value 那么赋值时可以省略属性名 尤其要注意的-------------- */ public @interface MyAnno03 { String value();//没有默认值 }
public @interface MyAnno04 { String value() default "少年攻城狮";//有默认值 }
自定义注解实例:
/* 定义一个注解:Book - 包含属性:String value() 书名 - 包含属性:double price() 价格,默认值为 100 - 包含属性:String[] authors() 多位作者 */ public @interface Book { String value(); double price() default 100; String[] authors(); }
自定义注解的使用示范:
/* 自定义Book注解并使用案例 定义一个注解:Book - 包含属性:String value() 书名 - 包含属性:double price() 价格,默认值为 100 - 包含属性:String[] authors() 多位作者 */ @Book(value="我爱java系列",price = 1000,authors = {"少年","少女"}) public class Demo08AnnotationBook { @Book(value = "少年启示录",authors = "伟哥") public void method() { } }
原文地址:https://www.cnblogs.com/hujunwei/p/12616890.html
时间: 2024-10-07 05:30:22