目录
什么是注解
Annotation注解用来对程序作出解释,同时它可以被其他程序或编译器读取
内置注解
内置注解即JDK自带注解, 这里列出常用的三种
- @Override
这个有没有太熟悉,使用此注解方法必须覆盖重写否则报错
- @Deprecated
声明方法、属性、类为已过时的,不建议程序员使用
- @SuppressWarnings
用来抑制编译时的警告信息,各种自定义命名不规范,变量或对象声明但没使用等等,在IDEA中都会出现浅黄色背景,使用这个注解可以抑制自定义的警告
@SuppressWarnings("all") 抑制所有警告
@SuppressWarnings("unchecked") 抑制所有未检查的
@SuppressWarnings("value={"unchecked","deprecation"}") 抑制未检查和已过时的。
元注解
元注解的作用是负责注解其他注解,Java定义了4个标准的元注解。
- Target
用于描述注解的使用范围
- Retention
表示需要在什么级别保存该注解的信息,用于描述注解的生命周期
- Document
说明该注解将被包含在javadoc中
- Inherited
说明子类可以继承父类中的该注解
自定义注解
使用步骤
- @interface用来声明一个注解,格式为public @interface 注解名{定义内容}
- 其中的每一个方法实际上时声明了一个配置参数
- 方法的名称就是参数的名称
- 返回值类型就是参数的类型(返回值只能是基本类型或Class或String或Enum)
- 可以通过default来声明参数的默认值
- 如果只有一个参数成员,一般参数名为value
- 注解元素必须要有值,定义注解元素时,经常使用空字符串,0作为默认值
//自定义注解
public class annotion {
@MyAnnotation(age=18,name = "lt")
public void test(){}
}
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{
//注解的参数:参数类型+参数名()
String name() default "";
int age();
int id() default -1; //如果默认值为-1代表不存在
String[] schools() default {"西部开源","清华大学"};
}