声明之后我可以做一个变量final吗?

Mat*_*att 14 java

我正在创建一个银行模型,而Account类有一个accountNumber字段.帐号永远不会改变,但我不能将字段设置为final,因为这会阻止构造函数设置它.

如果不可能这样做,那没关系.这只是一个CS任务,所以我想确保我以最好的方式做到这一点.

最好的实现是将字段及其setter方法设为私有吗?

mik*_*kej 25

构造函数可以设置它,如果它被标记为final例如以下是合法的:

public class BankAccount {

    private final int accountNumber;

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

}
Run Code Online (Sandbox Code Playgroud)

实际上,如果某个字段final在其声明中被标记为但未初始化,那么它必须在所有构造函数中设置.

如果你没有在类上放置一个公共setter,那么不能从类外部更改帐号,但将其标记为final也会阻止它(意外地)被类中的任何方法更改.