Java重复方法合并

标签 java generics methods

我有一个名为 ReadTill 的方法,它具有相同的代码主体,但参数类型不同。有人可以告诉我一个将它们结合起来的策略/代码吗?我不认为 InputStreamBufferedReader 共享一个接口(interface),如果它们共享一个接口(interface),那么它是什么,如果它们不共享我该怎么做?

我认为问题应该是,我该如何使用泛型来做到这一点?

提前致谢。

public static void ReadTill(InputStream in, OutputStream out, String end) throws IOException {
    int c, pos = 0;
    StringBuffer temp = new StringBuffer();
    while ((c = in.read()) != -1) {
        char cc = (char) c;
        if (end.charAt(pos++) == cc) {
            if (pos >= end.length()) {
                break;
            }
            temp.append(cc);
        } else {
            pos = 0;
            if (temp.length() > 0) {
                out.write(temp.toString().getBytes());
                temp.setLength(0);
            }
            out.write(cc);
        }
    }
}

public static void ReadTill(BufferedReader in, OutputStream out, String end) throws IOException {
    int c, pos = 0;
    StringBuffer temp = new StringBuffer();
    while ((c = in.read()) != -1) {
        char cc = (char) c;
        if (end.charAt(pos++) == cc) {
            if (pos >= end.length()) {
                break;
            }
            temp.append(cc);
        } else {
            pos = 0;
            if (temp.length() > 0) {
                out.write(temp.toString().getBytes());
                temp.setLength(0);
            }
            out.write(cc);
        }
    }
}

最佳答案

这些类(InputStreamBufferedReader)既不实现相同的接口(interface),也不扩展相同的类,但您可以从另一个类创建一个:

public static void readTill(InputStream in, OutputStream out, String end) throws IOException {
    readTill(new BufferedReader(new InputStreamReader(in)), out, end);
}

public static void readTill(BufferedReader in, OutputStream out, String end) throws IOException {
    // as before
}

通常,Java 方法名称都是驼峰命名法,所以我在示例中更改了它。

关于Java重复方法合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9961833/

相关文章:

java - 有什么设计模式可以使用吗?

java - 应用程序启动方法错误中的异常。其他解决方案不起作用

swift - 尝试在闭包中使用泛型类型时出现意外的编译器错误

javascript - 如何细化 Flow 中的综合事件?

java - 方法签名中的“ volatile ”?

javascript - 如何使用reduce方法计算字符串中的字母

java - Gradle 子项目依赖

java - MockMvc 显示相应的 curl 命令或 http 请求

java 方法接受一个 T extends Number

java - 变量未在函数中初始化