以下方法讀取文件並返回某個List類型。如何避免Java中List方法中的代碼重複?
List<X> readFile(String file) {
List<X> x = new ArrayList<X>();
File f = new File(file);
List<String> lines = null;
try {
lines = Files.readLines(f, Charsets.UTF_8);
} catch (IOException e) {
}
List<X> xList = new ArrayList<X>();
for (String line : lines) {
xList.add(new X(line));
}
return xList;
}
現在需要不同的列表。該方法已被複制,並且以下返回不同的List類型。
List<Y> readFile(String file) {
List<Y> y = new ArrayList<Y>();
List<String> lines = null;
try {
lines = Files.readLines(f, Charsets.UTF_8);
} catch (IOException e) {
}
List<Y> yList = new ArrayList<Y>();
for (String line : lines) {
yList.add(new Y(line));
}
return yList;
}
問題是該類已被複制。在這種情況下如何避免代碼重複?
嘗試
avoidDuplicatedCode(){
List<Y> y = new ArrayList<Y>();
List<String> lines = null;
try {
lines = Files.readLines(f, Charsets.UTF_8);
} catch (IOException e) {
}
return y
}
結果:
- 一套方法的返回類型爲 '列表'
時改變了很多其他問題發生
如果你不對它們做任何事情,閱讀文件的所有行是什麼意思?這些方法的**實際**代碼是什麼?如此,您可以用'new ArrayList()'替換第一個,用'new ArrayList ()'替換第二個。 –
如果你不關心'lines'列表,閱讀文件有什麼意義?關於你的問題:傳遞從「String」轉換爲「X」或「Y」的「東西」,那麼你只需要一種通用方法。 – Tom
我忘了添加代碼的缺失部分,即將行添加到列表中的部分。 – 030