首页 > 代码库 > 通过反射 修改访问和修改属性的值 Day25
通过反射 修改访问和修改属性的值 Day25
package com.sxt.field; /* * 通过反射拿到属性值 * 修改public属性值 * 修改private属性值 * 缺点:可读性差;代码复杂 * 优点:灵活;可以访问修改private属性值 * 以后多运用setXxx getXxx 修改属性的值 */ import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class TestField { public static void main(String[] args) throws Exception { //设置私有属性值 Class<?> class1 = Class.forName("com.sxt.entity.Student"); //创建对象 Object obj = class1.newInstance(); Field[] fields = class1.getDeclaredFields(); //遍历所有属性 for(Field f : fields){ System.out.println(f.getName()+"\t"+Modifier.toString(f.getModifiers())); } System.out.println("----------------------------------"); //修改public的score的属性值 Field field1 = class1.getDeclaredField("score"); //直接通过方法(基本数据类型) field1.setDouble(obj, 99.9); double d = field1.getDouble(obj); System.out.println(d); System.out.println("----------------------------------"); //拿到private的name的属性值 Field field2 = class1.getDeclaredField("name"); System.out.println(field2.getName() +" "+ Modifier.toString(field2.getModifiers())); //可以改变私有属性值 field2.setAccessible(true); field2.set(obj, "小明"); Object object = field2.get(obj); System.out.println(object); } }
通过反射 修改访问和修改属性的值 Day25
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。