Как использовать перечисления в геттерах и сеттерах?

Итак, я пытаюсь сделать следующее:

написать класс пользователя

Пользователь:

  • имеет имя пользователя e.g 'fj3'
  • имеет тип пользователя, который может быть: "пользователь", "редактор" или "администратор"
  • имеет имя e.g 'Francis'
  • имеет конструктор, который принимает имя пользователя, тип пользователя и имя в качестве параметров
  • имеет метод getUsername ()
  • имеет метод getUserType ()
  • имеет имя getName() метод
  • имеет метод setUserType (), который принимает один из типов пользователей в качестве параметра

мой код до сих пор:

public class User{

     public String id;
     public String userPermissions;
     public String actualName;

     public User(String username, String userType, String name){
         id = username;
         userPermissions = userType;
         actualName= name;
     }

    public String getUsername(){
        return id;
    }

    public String getUserType(){
        return userPermissions;
    }       

    public String getName(){
        return actualName;
    }

    public enum UserType{
       admin, editor, user;
    }

    public void setUserType(String input){
        userPermissions = input;
    }
}

что мне нужно сделать, чтобы получить эту работу? Я не знаю, как сделать так, чтобы единственными типами пользователей, которые могут быть выбраны, были admin, editor или user.

2 ответов


вы должны изменить свои типы на это перечисление:

public class User {
     public enum UserType {
        ADMIN, EDITOR, USER;
     }

     public String id;
     public UserType userPermissions;
     public String actualName;

     public User(String username, UserType userType, String name) {
         id = username;
         userPermissions = userType;
         actualName= name;
     }

    public String getUsername() {
        return id;
    }

    public UserType getUserType() {
        return userPermissions;
    }       

    public String getName() {
        return actualName;
    }

    public void setUserType(UserType input) {
        userPermissions = input;
    }
}

поскольку вы уже объявили тип перечисления для представления возможных значений для userType, вы уже прошли долгий путь к решению этой проблемы.

Если вы объявляете переменную типа UserType, то единственными возможными значениями должны быть одни из определенных констант перечисления.

чтобы ограничить ввод метода setPermissions, все, что вам нужно сделать, это изменить на следующее:

public class User{

    public String id;
    public String userPermissions;
    public String actualName;

    public User(String username, String userType, String name){
        id = username;
        userPermissions = userType;
        actualName = name;
    }

    public enum UserType{
        ADMIN, EDITOR, USER;
    }

    public void setUserType(UserType type){
        userPermissions = type.toString();
    }
}