1
我有許多類,POJO風格,共享單個功能,說readCSV方法。所以我想用這些POJO可以擴展的單個父級(或者抽象的,不知道是否應該)。下面是一個僞代碼:Java - 具體類擴展的泛型類
(abstract) class CSVUtil {
private String[] fileHeader = null;
protected void setFileHeader(fileHeader) {
this.fileHeader = fileHeader;
}
protected List<WhateverChildClass> readCSV(String fileName) {
// read CSV using Apache Commons CSV
// and return a List of child type
List<WhateverChildClass> list = null;
// some declarations
try {
list = new ArrayList<WhateverChildClass>();
csvParser = new CSVParser(fileReader, csvFormat);
List csvRecords = csvParser.getRecords();
for (...) {
CSVRecord record = (CSVRecord) csvRecords.get(i);
WhateverChildClass childClass = new WhateverChildClass();
// loop through fields of childClass using reflection and assign
for (// all fields of childClass) {
childClass.setWhateverField(record.get(fileHeader[i]));
}
list.add(childClass);
System.out.println(p);
ps.add(p);
}
}
...
return list;
}
}
在子類中的一個,說ChildA
class ChildA extends CSVUtil {
// fields, getters, setters
}
我如何readCSV編碼的CSVUtil,這樣我可以在運行時確定的子類中在父類中定義?
是否有可能使這個方法是靜態的並仍然被繼承?
作爲一種替代方法,Apache Commons CSV中是否存在API,通常可以讀取CSV,確定其模式,並將其包裝爲通用對象(我不知道這裏是否合理),然後返回列表無論對象是什麼?