一、Java常用注解:
1、@Override
检测被该注解标注的方法是否继承于父类(接口)
2、@Deprecated
表示被标注的方法已过时
3、@SuppressWarnings
压制警告
二、Java自定义注解
1、格式
(1)元注解:描述注解的注解
常见:
@Target:描述注解作用的位置
ElementType.TYPE:作用于类
ElementType.METHOD:作用于方法
ElementType.FIELD:作用于成员变量
@Retention:描述注解被保留的阶段
RetentionPolicy.RUNTIME:当前被描述的注解,会保留到class字节码文件中,并被JVM读取到
@Documented:描述注解是否被生成到API文档中
@Inherited:描述注解是否被子类继承
(2)public @interface 注解名称{
属性列表
}
2、反编译注解代码
E:\Java\documents\JavaFiles\DAY43\src\111>javac Myannotation.java
E:\Java\documents\JavaFiles\DAY43\src\111>javap Myannotation.class Compiled from "Myannotation.java" public interface Myannotation extends java.lang.annotation.Annotation { }
注:注解本质为一个接口,默认继承Annotation接口(java.lang.annotation.Annotation)
属性:接口中可定义的抽象方法
1)属性的返回值类型
基本数据类型
String
枚举
注解
以上类型的数组
2)使用属性时需要赋值
2.1在使用时需要给属性赋值,或者加上default
2.2若只有一个属性需要赋值,且属性名为value,则value可省略
2.3数组赋值时,值放在{}里面。若数组只有一个值,则{}可省略
package annotation;
public @interface MyAnno {
int method(); String method2() default "丁丁"; // // Person person(); // MA2 ma2(); // // String[] strings(); }
package annotation;
public class Demo2 {
@MyAnno(method = 1) public void method1() { } }
3、使用注解:获取注解定义的属性值
3.1获取注解定义的位置的对象
3.2获取指定的注解
3.3调用注解的抽象方法来获取配置的属性值