注解和反射
-
Annotation注解:以"@注释名",可以添加一些参数,可以对程序作出一些解释
@Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
@Retention:表示需要在什么级别保持改注解,用于描述注解的生命周期(RUNTIME)
@Document:说明该注解将被包含在javadoc中
@Inherited:说明子类可以继承父类中的该注解
使用@interface自定义注解,自动继承Java.lang.annotation.Annotation接口
-
反射 (类:加载:生成class类,链接:二进制代码合并到JVM中,初始化)
java.lang.Class:代表一个类
java.lang.reflect.Method/Field:代表类的方法/成员变量
java.lang.reflect.Constructor:代表类的构造器
获取Class类的实例:
- Class class=Person.class;
- Class class=Person.getClass();
- Class class=Class.forName("包名路径.类名");
-
动态创建对象
invoke(激活的意思)方法介绍: setName.invoke(user,"David");
创建的user对象,激活user.setName方法,传递"David" setName方法的参数
name.setAccessible(true); 关闭程序的安全检查,就可以操作class内的private属性或方法
关闭检查,可以提高反射程序运行效率