Java:多个构造函数强制代码重用?

标签 java multiple-constructors

我有一个类(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/

相关文章:

Java Pattern.matcher() 在匹配包含\n 的行时卡住

java - 二维 ArrayList 错误

c# - 如何在基类中声明构造函数,以便子类可以在不声明的情况下使用它们?

C++构造函数问题

android - 如何在 Android-Scala 应用程序中扩展 ImageView?

java - 使用注解确保方法返回的值不被丢弃

java - 在lua中将字节数组转换为double

java - 如何从另一个继承类调用 super 构造函数?

C# 备用无参数构造函数

java - 在 Swing 中将 StyleConstants.setFirstLineIndent 设置为负数后文本模糊