java - 最终变量和构造函数重载

标签 java constructor final

我想在我的类中使用构造函数重载,我还想定义一些final变量。

我想要的结构是这样的:

public class MyClass{
    private final int variable;

    public MyClass(){
        /* some code and 
           other final variable declaration */
        variable = 0;
    }

    public MyClass(int value){
        this();
        variable = value;
    }
}

我想调用 this() 以避免重写我的第一个构造函数中的代码,但我已经定义了最终变量,所以这会产生编译错误。 我想到的最方便的解决方案是避免使用 final 关键字,但这当然是最糟糕的解决方案。

在多个构造函数中定义变量并避免代码重复的最佳方法是什么?

最佳答案

你快到了。重写构造函数,使默认构造函数调用值为 0 的重载构造函数。

public class MyClass {
    private final int variable;

    public MyClass() {
        this(0);
    }

    public MyClass(int value) {
        variable = value;
    }

}

关于java - 最终变量和构造函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49128840/

相关文章:

c++ - 为什么类类型的成员需要初始化?

java - 避免 "Potential null pointer access"

java - Google 使用哪个 IDE 进行 C++ 和 Java 开发

java - 使用泛型 Java 对数组/比较器进行二分搜索

java - 在 Java 中创建引用

java - 如何使用 FindBugs 强制分配给方法的参数?

constructor - 如何在 Kotlin 的构建过程中修改 val 成员

java - FileWriter 没有将运行时整数值插入到文件中?

c++ - 在构造对象时定义成员函数

c++ - 初始化依赖于另一个类成员的类成员