我有一个对象,我想限制对其某些方法的访问,以便只有该对象的创建者才能访问它们:
class RestrictedObject {
private final UUID id;
public RestrictedObject(UUID id) {
this.id = id;
}
public boolean restrictedMethod(UUID anId) {
if (anId.equals(this.id)) {
//do stuff
return true;
} else {
return false;
}
}
}
Object的创建者会这样做:
UUID id = UUID.randomUUID();
RestrictedObject o = new RestrictedObject(id);
o.restrictedMethod(id);
这是好的做法还是一个糟糕的想法?
答案 0 :(得分:2)
尝试在用户可以执行任意Java代码的系统中强制执行访问控制是一个糟糕的主意
它基本上是Java applet背后的理念,它一再被证明很难做到正确。
您需要确保有权访问该对象的用户不能使用反射等技巧来读取UUID字段
我会质疑你实际上试图解决的问题,并找到一种更好的方法来沙盒用户。