java - 我如何在构造函数中将字段设置为常量

标签 java constants subclass final

所以我有一个包含姓名、地址、年龄和电子邮件地址的 Person 类。 Person 的子类 Student,具有“类(class)状态(大一、大二、大三、大四)”。我必须将状态定义为常量。

class Student extends Person{
    private String classStatus;

    public Student(String name, String address, int age, String email,
final String classStatus){
        super(name, address, age, email);
        this.classStatus = classStatus;}

这有什么特别不对的地方吗? Eclipse 没有给我任何错误,但是,我觉得我的变量实际上并没有设置为常量。基本上,当我构造一个 Student 对象时,我还想在参数中包含“freshmen”、“sophomore”、“junior”或“senior”,它会将 classStatus 设置为常量。

当我写这篇文章时,我意识到如果我不为 classStatus 提供 set 方法,它是否已经是一个固有的常量?这是因为它是私有(private)的吗?

最佳答案

As I was writing this, I realized that if I don't provide a set method for the classStatus, is it inherently a constant already? Is this due to it being private?

这不是正确的做法,请将变量 classStatus 声明为 final

private final String classStatus;

在这种情况下,您必须在创建 Student 实例时提供 classStatus,此后无法为该实例更改。

关于java - 我如何在构造函数中将字段设置为常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22942572/

相关文章:

objective-c - 如何在测试中将父类的扩展函数用于我自己的子类?

c++ - 是否可以将非模板类子类化为模板类?

java - 如何用Java搜索文件并返回值?

python - 子类、意外参数和 Unresolved 引用的问题

java - 通过调用方法打印右对齐三角形

c - 使用 const 外部值作为非常量外部值是否安全?

包含文件中 __FILE__ 的 PHP 输出

constants - D 中的逻辑常量

java - 提取一行java代码中使用的变量?

java - Java 中的 JFrame 问题