黑马程序员技术交流社区

标题: 注解与反射 [打印本页]

作者: 342508558    时间: 2015-6-22 10:43
标题: 注解与反射
注解
注解和注解处理器<让注解有效,需要有注解处理器/类/方法来执行>
注解当做修饰符来使用
注解可以包含元素如,@Test(aint="100",aString="str"),元素值必须要引号,以逗号分隔,元素可以被注解处理器处理。
注解可以注解在类,方法,成员变量,局部变量
注解通过注解接口定义,如
@Target(ElementType.METHOD)//用于方法前
@Retention(RetentionPolicy.RUNTIME)//运行时保留
public @interface Test{
int aint()=0;
String aString() default "as";
}
注解是接口,但接口的实现类是由虚拟创建的<代理方式>,因此,注解内的元素实际上是方法的声明。
注解是由编译器生成的,所有元素值必须是编译期常量
注解元素值不能为null,可以设为Void.class
源码级的注解由注解处理器处理,处理器继承AbstractProcessor实现Processor接口,使用javac -processor [处理器类][源文件类名]
,处理器会生产相应的源文件。
常用注解
用于编译的注解:@Deprecated,@SuppressWarnings(),@Oveerride,@Generated
用于类、资源管理:@PostConstruct,@PreDestroy,@Resource
四个元注解:@Target,@Retention,@Documented,@Inherited

反射
获得值
class cls = obj.getClass()//获得类对象
Field f = cls.getField(XXX)//获得XXX变量
f.setAccessible(true)//无视访问权限
f.get(obj)//获得obj.xxx的值
clas
forName(xxx)//需要完整的类名<包括包名>



作者: 洪伟    时间: 2015-6-22 10:54
谢谢分享,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2