Мое затмение продолжает говорить "Значение поля не используется" - PullRequest
0 голосов
/ 11 марта 2019

у меня есть (логическое) переменная hasDriverLicence в моем классе Person. Я создал методы получения и установки и использовал hasDriverLicence в конструкторе person, но мое затмение говорит: «Значение поля Person.hasDriverLicence не используется». Вот код:

public Person(int id, String firstName, String lastName, String gender, Calendar birthDate, String maritalStatus,
        String hasDriverLicence) throws Exception {

    this.id = id;
    this.firstName = firstName;
    this.lastName = lastName;
    this.birthDate = birthDate;

    setGender(gender);
    setMaritalStatus(maritalStatus);
    setHasDriverLicence(hasDriverLicence);

а вот геттер и сеттер:

public void setHasDriverLicence(String hasDriverLicence) throws Exception {

    if (!(hasDriverLicence.equalsIgnoreCase("Yes")) && !(hasDriverLicence.equalsIgnoreCase("No")))

        throw new Exception("Wrong input, please type Yes or No");

    if (hasDriverLicence.equalsIgnoreCase("Yes")) {

        this.hasDriverLicence = true;

    }

    else if (hasDriverLicence.equalsIgnoreCase("No")) {

        this.hasDriverLicence = false;

    }
}

public String getHasDriverLicence() {

    if (this.hasDriverLicence = true)

        return "Yes";

    if (this.hasDriverLicence = false)

        return "No";

    else

        return "";
}

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

У вас есть опечатка в геттере.Ваши if условия фактически устанавливают значение поля экземпляра, вместо проверки его:

if (this.hasDriverLicence = true)

Это должно быть:

if (this.hasDriverLicence == true)

Или лучше просто:

if (this.hasDriverLicence) {
    // ...
// no need for a separate if statement for the opposite condition,
// and you can only have two states here
else { 

    // ...
}

Поэтому переменная присваивается, но никогда не используется в вашем коде.

Разработка

Причина, по которой сингл = компилируется, но IDE выдает предупреждение о том, что переменная никогда не используется, заключается в том, что назначениеОператор возвращает присвоенное значение .

Например, оператор:

myVariable = 1  

... возвращает 1.

Поэтому, когда вы неправильно проверяете назначение (=), а не примитивное равенство (==), вы всегда будете проверять значение вашего назначения (в вашемcase, true в первом условии, которое будет всегда выполняться, false во втором, которое, следовательно, никогда не будет выполняться).

0 голосов
/ 11 марта 2019

Может быть, вы можете попытаться восстановить свое рабочее пространство.Я не могу увидеть проблему с вышеуказанным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...