Java反射机制
【定义】正在运行,动态获取这个类的所有信息
【作用】
1.反编译:.class-->.java
2.通过反射机制访问java对象的属性,方法,构造方法等;
【应用范围】
1.Jdbc 加载驱动 2.Spring ioc 3.框架
package com.wezhan.senior;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectDemo
{
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException {
Class<?> className = Class.forName("com.wezhan.senior.User");
Field[] fieldList = className.getDeclaredFields();
System.out.println("user 类包含字段名称如下");
//获取User类下面的所有属性名称
for(Field field : fieldList){
System.out.println(field.getName());
}
System.out.println("user 类包含方法名称如下");
//获取User类下面的所有方法名称
Method[] declaredMethods = className.getDeclaredMethods();
for(Method method : declaredMethods){
System.out.println(method.getName());
}
//通过反射获取对象
User user = (User) className.newInstance();
System.out.println(user.toString());
//通过反射获取私有属性id字段
Field idField = className.getDeclaredField("id");
//修改私有属性id字段的值
idField.setAccessible(true);
idField.set(user, "2");
Field nameField = className.getDeclaredField("name");
nameField.setAccessible(true);
nameField.set(user, "Jay Chou");
System.out.println(user.toString());
}
}