注解的作用:对我们的程序进行不标注和解释
系统注解:
@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 {
}