一:注解(Annotation)概述
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。
Java 语言中的类、方法、变量、参数和包等都可以被标注。
框架 = 注解 + 反射 + 设计模式
二:常见的注解示例
使用Annotation时要在其他前面增加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素。
//在编译时进行格式检查(JDK内置的三个基本注解)@Override:限定重写父类方法,该注解只能用于方法@Deprecated:用于表示所修饰的元素(类、方法等)已过时。通常是因为所修饰的结构危险或存在更好的选择。@SuppressWarnlngs:控制编译器警告
三:自定义注解
定义新的 Annotation类型使用@interface关键字。自定义注解自动继承了java.lang.annotation.Annotation接口。Annotation的成员变量在Annotation定义中以无参数方法的形式来声明。其方法名和返回值定义了该成员的名字和类型。我们称为配置参数。类型只能是八种基本数据类型、String类型、Class类型、enum类型、 Annotation类型、以上所有类型的数组。可以在定义Annotation的成员变量时为其指定初始值,指定成员变量的初始值可使用default关键字。如果只有一个参数成员,建议使用参数名为value。如果定义的注解含有配置参数,那么使用时必须指定参数值,除非它有默认值。格式是“参数名=参数值”,如果只有一个参数成员,且名称为value,可以省略"value="。没有成员定义的Annotation称为标记,包含成员变量的Annotation称为元数据Annotation。注意:自定义注解必须配上注解的信息处理流程(使用反射的方式)才有意义。
/*** 如何自定义注解?参照 @SuppressWarnings定义。* 1.注解声明为 @interface。* 2.内部定义成员:通常使用value表示。* 3.可以指定成员的默认值,使用default定义。* 4.如果自定义注解没有成员,表明是一个标识作用。* 5.如果注解有成员,在使用注解时,需要指明成员的值,如果有默认值,则不用。*///@interface和接口没有任何关系,只不过是一个固定的结构public @interface MyAnnotation {String value() default "hello";}
四:JDK中的元注解
(1)四个基本元注解
作用在其他注解的注解(或者说--元注解)是:@Retention - 标识这个注解怎么保存,是只在代码中(SOURCE),还是编入class文件中(CLASS)(默认行为),或者是在运行时可以通过反射访问(RUNTIME)。@Documented - 标记这些注解是否包含在用户文档中。@Target - 用于指定被修饰的Annotation能用于修饰哪些程序元素。@Inherited - 被修饰的Annotation将具有继承性。类比:元数据(对现有数据进行修饰)。String neme = "hgk";其中,hgk就是元数据。
