注解的作用:对我们的程序进行不标注和解释
系统注解:
| @Override | 描述子类重写父类的方法 |
|---|---|
| @Deprecated | 描述方法过时 |
| @SuppressWarnings | 压制警告 |
压制警告:ide方法变量没被使用为灰色,可以使用@SuppressWarnings(value = “all”)去除警告
注解和注释的区别:
注释:是给程序员看的;
注解:给编译器看的(让虚拟机看到程序中的注解,注解代表程序的一些特殊功能)
自定义注解:
格式:public @interface 注解名{
public 属性类型 属性名 () default 默认值;
}
public可以不写,默认仅能为public
属性类型:
基本数据类型
String
Class
注解
枚举
以上类型的一维数组
public @interface Anno1 {//定义一个基本类型的属性int a () default 23;//定义一个string类型的属性public String name();// 定义一个Class类型的属性public Class clazz() default Anno2.class;// 定义一个注解类型的属性public Anno2 anno() default @Anno2;// 定义一个枚举类型的属性public Season season() default Season.SPRING;// 以上类型的一维数组public int[] arr() default {1,2,3,4,5};// 枚举数组public Season[] seasons() default {Season.SPRING,Season.SUMMER};}// 在使用的注解的时候如果注解里面的属性没有指定默认值// 那我需要手动给出注解属性的设置值@Anno1(name = "test")public class AnnoDemo {}
特殊属性value:如果我们定义的注解中只需要给value赋值,那么在使用的时候value这个”键”就可以省略
public @interface Anno1 {//定义一个基本类型的属性int a () default 23;String value();}// 直有value需要赋值时,只需要写入需要赋的值就行@Anno1("test")public class AnnoDemo {}
