2017-05-07 3 views
1

Je travaille sur un petit projet où je veux avoir une liste de classe appelée "DevelopmentEmployee", mais seulement l'un d'entre eux est autorisé à manipuler certaines méthodes dans une autre classe "Project". De la façon dont je l'ai implémenté, la classe Project a un champ appelé projectLeader, qui est du type DevelopmentEmployee. Quand un DevelopmentEmployee tente d'accéder à des méthodes dans la classe Project, je veux vérifier si DevelopmentEmployee est égal à l'instance spécifique de projectLeader de Project.Comment vérifier si une instance d'une classe a accès à une méthode dans une autre classe?

Quelque chose comme

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); 
     } 
    } 
} 

Mais je ne peux pas trouver un moyen de faire fonctionner l'exigence d'accès. Comment l'instance de la classe Project peut-elle savoir qui tente d'y accéder?

+0

Salut Jacob, votre code Java ne peut pas exécuter embarqué dans une question SO (encore), donc je supprimé l'extrait de code formatage . –

Répondre

4

Vous devez également passer le DevelopementEmployee dans addActivity pour vérifier contre le Projectleader.

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

Ensuite, vous devez passer outre méthode equals dans DevelopmentEmployee classe, pour une bonne vérification de l'égalité, comme celui présenté ci-dessous:

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

Plusieurs possibilités viennent à l'esprit:

Fournit l'instance de celui qui accasse la méthode projet à la méthode:

public void addActivity(String activityName, DevelpmentEmployee user) { 
    if (projectLeader.equals(user)) {` 

Créer une classe qui contient des informations sur l'utilisateur actif et l'utiliser à l'intérieur des méthodes:

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() { ... } 
}`