AI智能
改变未来

java通过反射设置对象私有属性

/** * 测试实体类 属性都是私有的 */public class Model {private String a;private String b;@Overridepublic String toString() {return \"model [a=\" + a + \", b=\" + b + \"]\";}}

/** * 测试main方法 */public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { Model m = new Model();     Class<?> classType = m.getClass();     Field a = classType.getDeclaredField(\"a\");     Field b = classType.getDeclaredField(\"b\");     a.setAccessible(true); // 抑制Java对修饰符的检查     b.setAccessible(true); // 抑制Java对修饰符的检查     a.set(m, \"测试aaa\");     b.set(m, \"测试bbb\");     System.out.println(m);}

如果想防止通过反射修改私有属性也是有办法的 

我记得java中有个类还是配置叫SecurityManager,通过对jvm的配置来启用安全策略,然后在反射时进行权限检查 ,具体没有实现过 可以查看相关资料。

谢谢观看!

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » java通过反射设置对象私有属性