一、java 中的annotation的定义
java中的annotation
java定义了几个标准的meta-annotation,在新package中java.lang.annotation 中包含了以下meta-annotation:
meta-annotation 说明
@target 1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。
| meta-annotation | 说明 |
| @target | 1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。 2. elementtype的定义 type// class, interface, or enum (but not annotation) field// field (including enumerated values) |
| @retention | 1. source//按照规定使用注释,但是并不将它保留到编译后的类文件中 2. class//将注释保留在编译后的类文件中,但是在运行时忽略它 3. runtime//将注释保留在编译后的类文件中,并在第一次加载类时读取它 |
| @documented | documented 表示注释应该出现在类的 javadoc 中 |
| @inherited | 一个annotation将被继承 |
三个标准的annotation 在java.lang包中:
| @deprecated | 对不再使用的方法进行注释 |
| @override | 指明注释的方法覆盖超类的方法 |
| @suppresswarnings | 阻止编译器的警告,例:当类型不安全时 |
下例来说明这三个标准的annotation:
| package sz.starbex.bill.annotation; import java.util.arraylist; import java.util.list; public class simpleoverrideannotation { public static void main(string[] args) { simpleoverrideannotation test = new simpleoverrideannotation(); system.out.println(test.tostring()); } @override public string tostring() { return "自己的类自己输出"; } @deprecated public void dosomething() { system.out.println("方法已过时" ); } @suppresswarnings(value={"unchecked"}) public void testsuppresswarnings(){ list testlist=new arraylist(); testlist.add("kkkk");//没有使用范型,类型不安全 } } |
一、java 中的annotation的定义
java中的annotation
java定义了几个标准的meta-annotation,在新package中java.lang.annotation 中包含了以下meta-annotation:
meta-annotation 说明
@target 1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。
| meta-annotation | 说明 |
| @target | 1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标。 2. elementtype的定义 type// class, interface, or enum (but not annotation) field// field (including enumerated values) |
| @retention | 1. source//按照规定使用注释,但是并不将它保留到编译后的类文件中 2. class//将注释保留在编译后的类文件中,但是在运行时忽略它 3. runtime//将注释保留在编译后的类文件中,并在第一次加载类时读取它 |
| @documented | documented 表示注释应该出现在类的 javadoc 中 |
| @inherited | 一个annotation将被继承 |
三个标准的annotation 在java.lang包中:
| @deprecated | 对不再使用的方法进行注释 |
| @override | 指明注释的方法覆盖超类的方法 |
| @suppresswarnings | 阻止编译器的警告,例:当类型不安全时 |
下例来说明这三个标准的annotation:
| package sz.starbex.bill.annotation; import java.util.arraylist; import java.util.list; public class simpleoverrideannotation { public static void main(string[] args) { simpleoverrideannotation test = new simpleoverrideannotation(); system.out.println(test.tostring()); } @override public string tostring() { return "自己的类自己输出"; } @deprecated public void dosomething() { system.out.println("方法已过时" ); } @suppresswarnings(value={"unchecked"}) public void testsuppresswarnings(){ list testlist=new arraylist(); testlist.add("kkkk");//没有使用范型,类型不安全 } } |
闽公网安备 35060202000074号