我有一个类(class),其中一个成员是 ArrayList<ArrayList<Double>> elements
,所以我有一个接受相同类型的构造函数,一切都很好。
public elementArray(ArrayList<ArrayList<Double>> elements)
{
this.elements = elements;
// a bunch of other stuff happens
}
但是,我还需要能够使用 Double[][]
类型的输入进行构造,所以我先把它转换成二维列表类型,然后调用原来的构造函数...
public elementArray(Double[][] array)
{
// convert Double[][] array to ArrayList<ArrayList<Double>> elements
this(elements);
}
只是,我不能调用另一个构造函数,除非是在我的构造函数中发生的第一件事!我是注定要在此处复制粘贴,还是有一种聪明的方法来做我想做的事?
最佳答案
一种解决方案是将转换提取到静态方法中:
public elementArray(Double[][] array) {
this(convert(elements));
}
private static ArrayList<ArrayList<Double>> convert(Double[][] array) {
// convert Double[][] array to ArrayList<ArrayList<Double>> elements
}
关于Java:多个构造函数强制代码重用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52944935/