/** * 测试实体类 属性都是私有的 */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, IllegalArgumentExcept����,����ion, 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的配置来启用安全策略,然后在反射时进行权限检查 ,具体没有实现过 可以查看相关资料。
谢谢观看!