Java:重载相互调用的构造函数

标签 java constructor overloading

考虑一个从 CSV 行中找到的数据实例化的类,并存储它的一些字段。为此类创建两个构造函数是有意义的 - 一个来自原始 CSV 行,一个具有显式变量分配。

例如,

public MyClass(String csvLine)
{
    String[] fields = StringUtils.split(csvLine, ',');
    this(fields[3], fields[15], Integer.parseInt([fields[8]));
}

public MyClass(String name, String address, Integer age)
{
    this.name=name;
    this.address=address;
    this.age=age;
}

在 Java 中,这会失败,因为:

Constructor call must be the first statement in a constructor WhereOnEarth.java

实现它的正确方法是什么?

最佳答案

这是我的看法:

public class MyClass {

    public static MyClass fromCsvLine(String csvLine) {
        String[] fields = StringUtils.split(csvLine, ',');
        return new MyClass(fields[3], fields[15], Integer.parseInt([fields[8]));
    }

    //...

}

用法:

MyClass my = MyClass.fromCsvLine("...");

关于Java:重载相互调用的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566818/

相关文章:

java - 重载函数 int... 和 long... 同时

java - log4j 或 Logback 是否支持内存映射文件?

java - 如何在多个浏览器中运行 Selenium 测试以使用 Java 进行跨浏览器测试?

c# - 是否可以从递归生成的类继承?

java 如何从 JPANEL(子窗体)设置 JFRAME(父窗体)中标签的文本

c# - 调用 this() 构造函数和不同的 base() 构造函数

c++ - 模板特化和函数重载之间的区别?

c# - 在 C# 中解决方法重载的优先规则是什么?

java - Heap中新生代和老年代的区别

java - 将 ArrayList 的 LinkedList 指针转换为 String