То, что упомянул пользователь Stinepike, является одной из возможностей. В зависимости от вашей реализации, если вы хотите, чтобы «список контроля доступа» управлял тем, какой экземпляр может получить доступ к атрибуту текущего класса, вы можете сохранить список:
public class Service{
private ArrayList<Service> accessControl;
private Customer customer;
public Service(){
accessControl = new ArrayList<Service>();
}
public void grantAccessTo(Service s){
accessControl.add(s);
}
public boolean hasAccess(Service s){
accessControl.contains(s);
}
private Customer getCustomerByACL(Service s){
if(hasAccess(s))
return customer;
else
//throw an exception or return null..
}
}
Использование списка:
Service a = new Service();
Service b = new Service(); //b cannot access a
b.grantAccessTo(a); //a can access b