我在抽象类中有一个构造函数,该构造函数中包含许多参数

我正在尝试扩展此类,我想在扩展构造函数中对super()的调用中设置一些默认值。

问题在于,通过查看代码,看起来很混乱:

super(0,1,2,3,4,5,6,7,8,9);


(请记住,这是为堆栈溢出而简化的)。

我想做的是有这样的构造函数:

    public Test(){
    int a = 0;
    int b = 1;
    int c = 2;
    int d = 3;
    int e = 4;
    int f = 5;
    int g = 6;
    int h = 7;
    int i = 8;
    int j = 9;
    super(a,b,c,d,e,f,g,h,i,j);
}


纯粹出于视觉和阅读目的。有什么办法吗?

最佳答案

不,您不能这样做-但是,如果重要的部分是为参数赋予有意义的名称,则可以考虑以下方法:

class Foo extends Bar {
    private static final int DEFAULT_WIDTH = 10;
    private static final int DEFAULT_HEIGHT = 10;

    public Foo() {
        super(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    }
}


就个人而言,我发现比起在构造函数中拥有局部变量,它更容易解释。

另一种解释方式是注释:

public Foo() {
    super(
        10,  // width
        10); // height
}


无论如何,这只会与“声明单独的变量”代码的行数相同。

08-06 02:16
查看更多