2017-05-07 26 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() { ... } 
}` 
相關問題