反射机制总结
概念:将类的各个组成部分封装为其他对象,这就是反射机制
Class对象功能:
获取功能:
1,获取成员变量
Field[ ] getFields():获取所有public修饰的
Field getField(String name):获取指定名称的public修饰的成员变量
Field[ ] getDeclaredFields() :获取所有的成员变量,不考虑修饰符
Field getDeclaredField(String name)
2,获取构造方法
Constructor<?>[ ] getConstructors()
Constructor getConstructor(类<?>…parameterTypes)
Constructor getDeclaredConstructor(类<?>…parameterTypes)
Constructor<?>[ ] getDeclaredConstructors()
3,获取成员方法
Method[ ] getMethods()
Method getMethod(String name,类<?>…parameterTypes)
Method[ ] getDeclaredMethods()
Method getDeclaredMethod(String name,类<?>...parameterTypes)
//调用对象obj5的无参eat方法
method1.invoke(obj5);
新建属性集对象 Properties properties = new Properties();
//通过Class得到配置文件的资源,转换到输入流中
InputStream is = Test06.class.getResourceAsStream(“config.properties”);
//将输入流进入properties中 properties.load(is); //获取某个
properties.getProperty(“Person”);
//设置某个值
properties.setProperty(“Person”,”com.srzx.demo04.PersonXXX”);
//保持所有属性 到 文件中
OutputStream out = new FileOutputStream("config.properties");
properties.store(out,"hello");
4,获取类名
* string getName()
Field:成员变量
操作:
1,设置值
void set(Object obj,Object value)
2,获取值
get(Object obj)
3,忽略访问权限修饰符的安全检查//设置访问权限为可读
setAccessible(true):暴力反射
4.拿到类 类型三种方案
1.Class clz=class.forname(“ ”);
2.直接可以person.class
3.第三种
通过对象Person p=new person();
Class clz=p.getclass();
———————————————— 千年老妖