以下方法读取文件并返回特定的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
}
结果:
当发生变化时会发生很多其他问题
答案 0 :(得分:2)
您可以引入通用参数:
<T> List<T> readFile(String file) {
List<T> list = new ArrayList<T>();
// ...
return list;
}
public void foo() {
List<Integer> l1 = readFile("l1");
List<String> l2 = readFile("l2");
}