反射

    xiaoxiao2021-04-15  34

    package cn.itcast_03; import java.lang.reflect.Constructor; import java.lang.reflect.Field; /* * 需求:通过反射获取成员变量并使用 */ public class ReflectDemo { public static void main(String[] args) throws Exception { // 获取字节码文件对象 Class c = Class.forName("cn.itcast_01.Person"); // 获取所有的成员变量 // Field[] fields = c.getFields(); // Field[] fields = c.getDeclaredFields(); // for (Field field : fields) { // System.out.println(field); // } /* * Person p = new Person(); p.address = "北京"; */ // 通过无参构造方法创建对象 Constructor con = c.getConstructor(); Object obj = con.newInstance(); System.out.println(obj); // 获取单个的成员变量 // 获取address并对其赋值 // public void set(Object obj,Object value) // 将指定对象变量上此 Field 对象表示的字段设置为指定的新值。 Field addressField = c.getField("address"); addressField.set(obj, "北京");// 给obj对象的addressField字段设置值为"北京" System.out.println(obj); // 获取name并对其赋值 // NoSuchFieldException:没有这个字段异常 Field nameField = c.getDeclaredField("name"); // 暴力访问 // IllegalAccessException:非法访问异常 nameField.setAccessible(true); nameField.set(obj, "风清杨"); System.out.println(obj); // 获取age并对基赋值 Field ageField = c.getDeclaredField("age"); ageField.setAccessible(true); ageField.set(obj, 27); System.out.println(obj); } }
    转载请注明原文地址: https://ju.6miu.com/read-671218.html

    最新回复(0)