2017-05-07 71 views
1

我正在研究一个小型项目,我想要一个名为“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); 
     } 
    } 
} 

但我不能想出一个办法,使访问要求的工作。班级项目的实例如何知道谁试图访问它?

+0

喜雅,你的Java代码无法运行嵌入在SO问题(还),所以我删除的代码片段格式。 –

回答

4

你也应该通过DevelopementEmployeeaddActivity检查它反对projectLeader

public void addActivity(String activityName,DevelopmentEmployee employee) { 
    if (projectLeader.equals(employee) { 
     activities.add(activity); 
    }  
} 

然后,你需要重写equals方法在DevelopmentEmployee类,平等的恰当的检查,就像一个如下图所示:

public boolean equals(DevelopementEmployee e){ 
    if(e!=null && this.employeeId==e.employeeId) 
     return true; 
    else 
     return false; 
} 
0

几种可能性浮现在脑海中:

向方法提供一个项目方法的实例:

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() { ... } 
}` 
相关问题