假设我有5个对象。我想让这个特定对象的数据可以被2个对象访问,但不能被其他两个对象访问。我怎么能这样做?
答案 0 :(得分:0)
非常通用的问题!在java中,我可能建议您设置包装,使数据提供者的包和预期允许的数据使用者相同,并且数据提供者的方法被定义为" protected",并且非特权的两个类在一个单独的包中。
但这只是大约一百万种方法中的一种,你可能会接近这样一个普遍的问题。
答案 1 :(得分:0)
一种简单的方法:在每个类中设置一个布尔值。
public class MyObject{
boolean hasPermission;
Data myData;
public Data getData(boolean permission){
if(permission)
return myData;
else
return null;
}
}
每当你创建对象......
MyObject hasData = new MyObject();
MyObject iHaveAccess = new MyObject();
MyObject iHaveAccess2 = new MyObject();
MyObject iDontHaveAccess = new MyObject();
MyObject iDontHaveAccess2 = new MyObject();
iHaveAccess.hasPermission = true;
iHaveAccess2.hasPermission = true;
iDontHaveAccess.hasPermission = false;
iDontHaveAccess2.hasPermission = false;
如果您想获取数据
hasData.getData(iHaveAccess.hasPermission); // returns data
hasData.getData(iDontHaveAccess.hasPermission); // returns null
显然,不要像我一样按字面意思实现它,用循环来做。您还可以在构造函数中设置hasPermission
布尔值。我假设所有5个对象都是相同的,如果它们也不是那么好。