考慮一個從CSV行中找到的數據實例化的類,並存儲它的一些字段。爲這個類創建兩個構造函數是有意義的 - 從原始CSV行創建一個構造函數,另一個使用顯式變量賦值。Java:重載相互呼叫的構造函數
例如,
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中,失敗的原因是:
構造函數調用必須是第一條語句在 構造WhereOnEarth.java
什麼是正確的方法實施這個?
+1這也是「Effective Java」推薦的。謝謝! – 2012-03-05 12:55:33
+1這也可以是'MyClass'中的靜態工廠方法,例如, 'MyClass.parse(String csv)'(如果你不介意_little_混合!) – DNA 2012-03-05 12:58:02
@DNA:是的,請參閱我的答案。雖然如果解析稍微複雜一點(或者有多個源,例如XML),那麼強烈建議解耦。 – 2012-03-05 13:01:49