Java类的final 字段是否应该始终是静态的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (46)

Java类的 final 字段是否应该始终是静态的?

提问于
用户回答回答于

当然不是。如果它们属于类,则必须是静态的,如果它们属于类的实例,则不必须是静态的:

public class ImmutablePerson {
    private static final int MAX_LAST_NAME_LENGTH = 255; // belongs to the type
    private final String firstName; // belongs to the instance
    private final String lastName; // belongs to the instance

    public ImmutablePerson(String firstName, String lastName) {
        if (lastName.length() > MAX_LAST_NAME_LENGTH) {
            throw new IllegalArgumentException("last name too large");
        }
        this.firstName = firstName;
        this.lastName = lastName;
    }

    // getters omitted for brevity
}
用户回答回答于

不,staticfinal完全不同的东西。static表示该字段与类型而不是该类型的任何特定实例。final意味着字段在初始赋值后不能更改值

扫码关注云+社区

领取腾讯云代金券