有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

泛型如何重构具有相同结构、不同类的方法(Java)

重构具有相同逻辑但使用不同类的方法(在Java中)的最佳方法是什么?比方说

Method1(FileInputStream obj, OutputStream o){
  //stuff
  while(something){
    //---
    //some code
    //---
    obj.read();
    //---
    //some code
    //---
    o.write(..);
    //code
  }
  //code
}

然后我有

Method2(InputStreamReader obj, OutputStreamWriter os){
  //stuff
  while(something){
    //---
    //some code
    //---
    obj.read(..);
    //---
    //some code
    //---
    os.write();
    //code
  }
  //code
}

一个方法处理二进制文件,另一个处理文本。理想情况下,我想要的是有一个读取过程,写入并隐藏所有特定信息


共 (2) 个答案

  1. # 1 楼答案

    你不能读写同样的东西,所以他们除了名字之外没有任何共同之处。唯一能让它们变得通用的方法就是把二进制和文本写成二进制,也就是说,不管怎样,最终都变成了二进制

  2. # 2 楼答案

    最好的方法是使用正确的接口:

    void method2(Reader obj, Writer os){
       // code...   
    }
    

    然后像这样使用InputStreams

    method2(new InputStreamReader(fileInputStream), new OutputStreamWriter(outputstream));
    

    为什么这样更好

    这更好,因为您正在抽象出该方法的工作方式。你是说你不在乎实现是什么,只要它符合ReaderWriter。因此,用户有责任将InputStream更改为Reader不是你的。如果有异常被抛出,那么你不需要捕捉它。它被抛出到客户端代码中。这是一个重要的提示