注解简介
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。
Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 ,当然它也支持自定义 Java 标注。注解主要分为内置注解、源注解、自定义注解。
内置注解
内置注解主要有三种:
- @Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。
- @Deprecated - 标记过时方法。如果使用该方法,会报编译警告。
@SuppressWarnings - 指示编译器去忽略注解中声明的警告。
元注解
元注解的作用就是负责注解其它注解,Java定义了4个标准的meta-annotation类型,它们被用来对其它注解类型做说明。
@Retention - 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。
- @Documented - 标记这些注解是否包含在用户文档中。
- @Target - 标记这个注解应该是哪种 Java 成员。
- @Inherited - 标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)
自定义注解
可以使用@interface来自定义注解,自定义注解中的每一个方法其实是声明了一个配置参数;方法的名称是参数的名称;返回值类型就是参数的类型(返回值只能是基本类型、Class、String、enum);可以通过default来声明参数的默认值;如果只有一个参数成员,一般参数名为value;注解元素必须要有值,定义注解时,通常使用空字符串、0作为默认值。 ```java package MyPackage_1;
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;
public class Test
public T getX() {return x;}@myAnnotation(name = "佳豪")public void setX(T x) {this.x = x;}public static void main(String[] args) {Test<String> d1=new Test<>();Test<Integer> d2=new Test<>();d1.setX("1314");String x1=d1.getX();d2.setX(13);int x2=d2.getX();}
}
@Target({ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @interface myAnnotation{ String name() default “无名”; int id() default 0; } ```
