Как сравнить значение перечисления в JAVA - PullRequest
0 голосов
/ 11 февраля 2020

Я хотел создать что-то, когда пользователь входит в систему, если вход в систему как пользователь, то он go в первый модуль, в противном случае, если пользователь входит в систему как администратор, он входит во второй модуль. Вопрос в том, что я понятия не имею, как сравнивать роль пользователя с помощью 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");
    }
}

Вот мое объявление enum в классе Staff

enum userRole{
    Admin,
    User
}

Вот установщик и получатель

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

public userRole GetUserRole(){
    return userRole;
}

Ответы [ 2 ]

5 голосов
/ 11 февраля 2020

Вместо

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

Вы, вероятно, имеете в виду

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

или

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

В качестве примечания, согласно Java соглашениям об именах действительно, перечисление должно называться UserRole, а его значения ADMIN и USER. Как это:

enum UserRole {
    ADMIN,
    USER
};
2 голосов
/ 11 февраля 2020

заменить staff[i].GetUserRole().equals("User")

на staff[i].GetUserRole() == userRole.User

, поскольку они относятся к тому же экземпляру, который вы можете использовать == вместо .equals

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

...