如何避免Java中List方法中的代码重复?

时间:2016-06-12 23:25:22

标签: 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
}

结果:

  • 将方法返回类型设置为“列表”

当发生变化时会发生很多其他问题

1 个答案:

答案 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");
}