![](/img/trans.png)
[英]How to access a method from another class outside the creator of the instance
[英]How do I check if an instance of a class has access to a method in another class?
我正在做一个小项目,我想要一个名为“DevelopmentEmployee”的类的列表,但只允许其中一个类操作另一个类“Project”中的某些方法。 按照我的实现方式,Project 类有一个名为 projectLeader 的字段,它的类型为 DevelopmentEmployee。 当 DevelopmentEmployee 尝试访问类 Project 中的方法时,我想检查 DevelopmentEmployee 是否等于 Project 的 projectLeader 的特定实例。
就像是
public class Project {
private DevelopmentEmployee projectLeader;
private List < Activity > activities = new ArrayList < Activity > ();
public Project(DevelopmentEmployee pL) {
this.projectLeader = pL;
}
public void addActivity(String activityName) {
if (projectLeader.equals(DevelopmentEmployee * ) {
activities.add(activity);
}
}
}
但是我想不出一种方法来使访问要求起作用。 类 Project 的实例如何知道谁试图访问它?
你也应该通过DevelopementEmployee在addActivity检查它反对projectLeader。
public void addActivity(String activityName,DevelopmentEmployee employee) {
if (projectLeader.equals(employee) {
activities.add(activity);
}
}
然后,您需要覆盖DevelopmentEmployee类中的 equals 方法,以正确检查相等性,如下所示:
public boolean equals(DevelopementEmployee e){
if(e!=null && this.employeeId==e.employeeId)
return true;
else
return false;
}
想到了几种可能性:
向方法提供访问项目方法的实例:
public void addActivity(String activityName, DevelpmentEmployee user) {
if (projectLeader.equals(user)) {`
创建一些类来保存有关活动用户的信息并在方法中使用它:
public class Project {
private UserRegistry userRegistry;
private List<Activity> activities = new ArrayList<Activity>();
public Project(UserRegistry userRegistry) {
this.userRegistry = userRegistry;
}
public void addActivity(String activityName) {
if (userRegistry.isActiveUserProjectLeader()) {
activities.add(activity);
}
}
}
public class UserRegistry {
private DevelpmentEmployee projectLeader;
private DevelpmentEmployee activeUser;
private List<DevelpmentEmployee> user;
public void addUser(DevelpmentEmployee user) { ... }
public void makeProjectLeader(DevelpmentEmployee newLeader) { ... }
public void makeActiveUser(DevelpmentEmployee newActiveUser) { ... }
public boolean isActiveUserProjectLeader() { ... }
}`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.