Подтвердить что ты не робот

Могу ли я сделать переменную окончательную после ее объявления?

Я делаю банковскую модель, а класс Account имеет поле AccountNumber. Номер учетной записи никогда не должен меняться, но я не могу установить это поле как final, потому что это не позволит конструктору установить его.

Если это невозможно сделать, это не имеет значения. Это просто для назначения CS, поэтому я хочу удостовериться, что я делаю это наилучшим образом, как могу.

Будет ли лучшая реализация состоять в том, чтобы просто сделать поле и его метод setpp частными?

4b9b3361

Ответ 1

Конструктор может установить его, если он помечен как final, например. следующее правовое:

public class BankAccount {

    private final int accountNumber;

    public BankAccount(int accountNumber) {
        this.accountNumber = accountNumber;
    }

}

Фактически, если поле отмечено как final, но не инициализировано в его объявлении, оно должно быть установлено во всех конструкторах.

Если вы не ставите публичный сеттер в класс, то номер учетной записи не может быть изменен извне класса, но его маркировка как окончательная также предотвратит его (случайно) с помощью любых методов внутри класса.

Ответ 2

Если переменная final, она может (и должна) инициализироваться в конструкторе.