JAVA反射(4)

来源:互联网 发布:动态图修改软件 编辑:程序博客网 时间:2024/06/05 17:29

0.定义一个注解

    @Target(ElementType.FIELD)    @Retention(RetentionPolicy.RUNTIME)    @Documented    public @interface Column {            public String name() default "fieldName";            public String setFuncName() default "setField";            public boolean defaultDBValue() default false;     }

1.元注解是什么
a) 作用:就是负责注解其他注解
b) 种类:@Target、 @Retention、@Documented、@Inherited

2.@Target
a) 作用:说明类Annotation所修饰的对象范围
b) 作用范围:packages、types(类、接口、枚举)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。
c) ElementType取值 :
1)constructor 用于描述构造器
2)field 用于描述域
3)local_variable 用于描述局部变量
4)method 用于描述方法
5)package 用于描述包
6)parameter 用于描述参数
7)type 用于描述类、接口(包括注解类型)或 enum声明

 d)java中‘域(field)’是什么?所谓的域,翻译成英文就是field, 也就是我们常说的字段,或者说是属性。 比如类的字段(属性),局部的,全局的。所谓域,其实是“field”的翻译。然后实例域,就是 实例("object" )的"field"。包括实例域和静态域,静态域又叫类域。java中对象中的数据称为实例域(instance field)。

3.@Retention
a)定义注解的保留策略,即描述注解生命周期
b) RetentionPolicy取值范围:
1)source 在源文件中有效(即源文件保留)
2)class 在class文件中有效(即class保留)
3)runtime 在运行时有效(即运行时保留)

4.@Documented
作用:标记注解,用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化

5.@Inherited
作用:标记注解,阐述了某个被标注的类型是被继承的
注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。

原创粉丝点击