Java反射&;安全性:在整个类上禁用setAccessible
问题很简单:我有一个带有一些私有属性的类,我想保证,除非我提供了修改这些属性的方法,否则任何人都无法修改这些属性 一个多小时以来,我一直在寻找一个简单的答案,但到目前为止,我还没有找到任何结论 让我们看看代码:Java反射&;安全性:在整个类上禁用setAccessible,java,security,reflection,Java,Security,Reflection,问题很简单:我有一个带有一些私有属性的类,我想保证,除非我提供了修改这些属性的方法,否则任何人都无法修改这些属性 一个多小时以来,我一直在寻找一个简单的答案,但到目前为止,我还没有找到任何结论 让我们看看代码: public final class MyObject { private List<Integer> list = new ArrayList<Integer>(5); public MyObject() { for (int i = 1;
public final class MyObject {
private List<Integer> list = new ArrayList<Integer>(5);
public MyObject() {
for (int i = 1; i <= 5; i++) {
list.add(i);
}
}
public List<Integer> toList() {
return new ArrayList<>(list);
}
}
公共最终类MyObject{
私有列表=新的ArrayList(5);
公共对象(){
对于(int i=1;我看到了一些关于这个主题的精彩讨论。添加一个修改列表的接口/方法,不依赖反射巫术,不是更容易吗?根据,您需要配置一个SecurityManager
。
void test() throws Exception {
MyObject mo = new MyObject();
Field f = mo.getClass().getDeclaredField("list");
f.setAccessible(true);
List<Integer> myList = (List<Integer>) f.get(mo);
myList.add(100);
}