我在抽象类中有一个构造函数,它在构造函数中接受许多参数
我正在尝试扩展此类,并且想在扩展构造函数中对 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
}
无论如何,这只会与您的“声明单独变量”代码的行数相同。
关于java - 在调用 super() 之前声明变量,但 super 必须是第一个语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28299975/