我有2个构造函数,接受不同类型的参数:
public Board(String s) {
// the string is parsed to an int array.
int[] array = doSomething(s);
this(array);
}
public Board(int[] array) {
doSomethingElse(s);
}
然而,在第一个构造函数中,我得到了#34;构造函数调用必须是构造函数中的第一个语句"。有没有办法让构造函数在执行其他操作后调用另一个,或者它只是Java的限制?
答案 0 :(得分:3)
不,在另一个构造函数中执行其他操作后,您无法调用构造函数。构造函数是Java中非常特殊的方法。但是你有两个选择:
public Board(String s) {
this(doSomething(s));
}
private static int[] doSomething(String s) {...}
您可以调用任何静态方法并将其结果传递给另一个构造函数。
init()
):public Board(String s) {
int[] array = doSomething(s);
init(array);
}
public Board(int[] array) {
init(array);
}
private void init(int[] array) {
// do something else
}
答案 1 :(得分:2)
作为Java
的规则,应首先调用this
:
public Board(String s) {
this(doSomething(s));
}
答案 2 :(得分:1)
它不一定是构造函数。你可以这样做:
public Board(String s) {
// the string is parsed to an int array.
int[] array = doSomething(s);
this.sharedMethod(array);
}
public Board(int[] array) {
this.sharedMethod(array);
}
public void sharedMethod() {
//yourLogic
}