泛型如何重构具有相同结构、不同类的方法(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
}
一个方法处理二进制文件,另一个处理文本。理想情况下,我想要的是有一个读取过程,写入并隐藏所有特定信息
# 1 楼答案
你不能读写同样的东西,所以他们除了名字之外没有任何共同之处。唯一能让它们变得通用的方法就是把二进制和文本写成二进制,也就是说,不管怎样,最终都变成了二进制
# 2 楼答案
最好的方法是使用正确的接口:
然后像这样使用
InputStreams
为什么这样更好
这更好,因为您正在抽象出该方法的工作方式。你是说你不在乎实现是什么,只要它符合
Reader
或Writer
。因此,用户有责任将InputStream
更改为Reader
不是你的。如果有异常被抛出,那么你不需要捕捉它。它被抛出到客户端代码中。这是一个重要的提示