如何在getter和setter中使用Enums?

时间:2013-11-09 17:28:21

标签: java enums

所以我想做的是:

编写用户类

用户:

  • 有一个用户名,例如'fj3'
  • 有一个userType,可以是:'user','editor'或'admin'
  • 的名称为'Francis'
  • 有一个构造函数,它将username,userType和name作为参数
  • 有一个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;
    }
}

我需要做些什么才能让它发挥作用?我不知道如何制作它所以可以选择的唯一用户类型是管理员,编辑者或用户。

2 个答案:

答案 0 :(得分:9)

您必须将类型更改为此枚举:

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

答案 1 :(得分:1)

因为您已经声明了一个枚举类型来表示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();
    }
}