1,注解
注解定义
注解英文单词是Annotation,从JDK1.5引入的新技术,可以被其他程序或者是编译器读取。
注解规则
@interface使用是表明该类是一个注解类。
1,会自动继承java.lang.annotation.Annotation接口,格式是public @interface 注解名{具体的内容}
2,在具体内容里面,每一个方法其实就是一个配置参数,没有方法体。
而方法名就是注解的参数名称。返回值类型只能是基本类型,class,String,枚举。
3,在配置参数的时候在方法名后面可以使用default定义默认值。
举个例子:
@test1(age=1) //不对age参数赋值会报错
public void method(){
}
//定义一个test1注解
@Target({ElementType.TYPE,ElementType.METHOD}) //需要添加ElementType.METHOD才能使注解作用在方法上
@Retention(RetentionPolicy.RUNTIME)
//@interface 后面加的是注解的名称
@interface test1{
//使用了default以后,在使用时不对该注解的的参数进行赋值也不会报错
String name() default "";
// Integer age(); 报错Integer不是基本数据类型
int age();
}
2,元注解
元注解定义
元注解就是注解其他注解的注解。我理解就是你创造一个东西需要工具是吧,元注解就类似工具的作用。
java定义了4个标准的mate-annotation类型,用来提供对其他annotation类型作说明。在java.lang.Annotation包中可以找到。
@Target
用于描述注解作用的范围,是类还是方法还是属性上。
在某个类上写上@Target注解,点击就可以进去下面的源码。
可以看到 需要一个ElementType类型的数组。于是查看ElementType[]就可以发现 是一个枚举类型。有点自己注解自己的意思。
@Retention
描述注解的声明周期,在什么级别的时候会起作用,超过就会无效。一般有三个级别source<class<runtime
RetentionPolicy是一个枚举类,说明我们我们在使用@Retention时要选择一个枚举。英文也表达了三个级别向下包含。
@Documented
用于说明该注解将被包含在javadoc中,
英文注释表明一切,这个也没啥说的,
@Inherited
说明子类可以继承父类中的注解。
这个元注解没啥说得啦,根据单词意思就知道了,还有就是人家已经注释了该元注解的作用就是子类可以继承父类的注解。
3,java常见的内置注解
@Override
定义在java.lang.Override包中,作用于方法上,表示一个方法声明打算重写父类的另一个方法的声明。
@Deprecated
定义在java.lang.Deprecated中,作用于方法,属性,或者类上面。建议程序员不要使用,一般是有更好的选择或者是有危险。
@SuppressWarnings
定义在java.lang.SuppressWarnnings中,作用于方法,类上,效果是预制编译器的警告信息。这个注解需要添加参数。