关于概念的解释:
元数据:关于数据的数据,可以用来生成文档、跟踪代码依赖、编译时检查、代替配置文件等。
类型:
1.标记注释 --没有参数,只有名称标识。例:@person
2.单一值注释 --在标记注释的基础上提供一段数据。@person("Jack");
3.完整注释 --可以包括多个数据成员,每个数据成员由名称和值构成
例:@person(name="Jack",age=25);
java中的annotation:java中提供3个内置注释类型
a. Override ,只能用于方法(不能用于类,包声明或者其他构造)
作用:可以保证编译时候Override函数的声明正确性
用法:@Override
public void fun(){..}
b.Deprecated 同样只能作用与方法
作用:对不应再使用的方法进行注解
用法:@Deprecated public void fun{...} //它们说这个注释跟函数要同一行
c.SupressWarnings 可以注释一段代码
作用:关闭特定的警告信息,例如你在使用泛型的时候未指定类型
用法: @SupressWarnings(value={"unchecked"})
..代码
Java中还提供了四种元注释,专门负责注释其他的注释
@Target 表示该注释可以用于什么地方。可用的ElementType参数包括:
CONSTRUCTOR : 构造器的声明
FIELD : 域声明(包括enum实例)
LOCAL_VARIABLE : 局部变量声明
METHOD : 方法声明
PACKAGE : 包声明
PARAMETER : 参数声明
TYPE : 类、接口 (包括注解类型) 或enum声明
@Retention 表示需要在什么级别保存该注释信息。可选的RetentionPoicy参数包括:
SOURCE : 注释将被编译器丢掉
CLASS : 注释在class文件中可用,但会被VM丢弃
RUNTIME : VM将在运行时也保留注释,因此可以通过反射机制读取注释的信息。
@Documented 将注释包含在JavaDoc中
@Inheried 允许子类继承父类中的注释。
示例:
//第一类
public @interface Person {
}
//第二类
public @interface Person {
String value();
}
//第三类
public @interface Person {
//名称
String name() default "other";
//年龄
int age() default "18";
//省略name和age后,用来保存name值
String value() default "Jack";
}