如何比较JAVA中枚举的值

如何比较JAVA中枚举的值,java,enumeration,Java,Enumeration,我想在用户登录时创建一些东西,如果以用户身份登录,那么它将进入第一个模块;如果以管理员身份登录,那么它将进入第二个模块。问题是我不知道如何使用enum来比较用户角色 for(int i = 0; i < staffCount; i++) { if(username.equals(staff[i].GetStaffID()) && pass.equals(staff[i].GetPassword()) && staff[i].GetUserRole()

我想在用户登录时创建一些东西,如果以用户身份登录,那么它将进入第一个模块;如果以管理员身份登录,那么它将进入第二个模块。问题是我不知道如何使用enum来比较用户角色

for(int i = 0; i < staffCount; i++) {
    if(username.equals(staff[i].GetStaffID()) && pass.equals(staff[i].GetPassword()) && staff[i].GetUserRole().equals("User")){
        System.out.println("hello user");
    }
}
这是二传手和接球手

public void SetUserRole(userRole userRole){
    this.userRole = userRole;
}

public userRole GetUserRole(){
    return userRole;
}
而不是

staff[i].GetUserRole().equals("User")
你可能是说

staff[i].GetUserRole().equals(userRole.User)

作为旁注,根据Java的命名约定,枚举应该真正命名为
UserRole
,其值为
ADMIN
USER
。像这样:

enum UserRole {
    ADMIN,
    USER
};

替换
staff[i].GetUserRole().equals(“用户”)

使用
staff[i].GetUserRole()==userRole.User

因为它们引用的是同一个实例,所以可以使用==而不是
.equals


同样,正如Feredrico klez Culloca所说,您应该研究命名约定,枚举名称之类的常量通常都是大写的,枚举、类和接口往往是大写的,变量名和方法往往是camelcase。

很好理解:枚举值可以通过
=
进行比较,因为值是全局单例对象。真正做到
enum UserRole
/
getUserRole
staff[i].GetUserRole() == userRole.User
enum UserRole {
    ADMIN,
    USER
};