Как использовать Enums в getters и seters?

Так что я пытаюсь сделать следующее:

Создать класс пользователя

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

  • имеет имя пользователя, например, 'fj3'
  • имеет userType, который может быть: 'user', 'editor' или 'admin'
  • имеет имя, например, "Фрэнсис"
  • имеет конструктор, который принимает имя пользователя, userType и имя в качестве параметров
  • имеет метод 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.

Ответ 1

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

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

Ответ 2

Поскольку вы уже объявили тип перечисления для представления возможных значений для 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();
    }
}