考虑一个从 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/