我需要实现相同的逻辑:使用InputStream
比较文件以二进制形式进行比较,使用Reader
以unicode形式进行比较。
我可以以某种方式创建一个采用 InputStream
或 Reader
的方法,并与所采用参数的 read()
方法执行相同的逻辑。
找不到适合这种情况的通配符,因为据我所知,InputStream
和 Reader
没有交互的层次结构。
我需要一个采用 BufferedInputStream
或 BufferedReader
的方法。
最佳答案
您可以使用重载创建两个方法,这意味着每个方法都采用您想要支持的输入之一。
定义一个接口(interface),其中包含您需要从两个方法访问的功能,然后编写实现该接口(interface)的包装类(这些可以是相应方法中的匿名内部类)。
将包装的输入传递给在接口(interface)上工作的内部私有(private)处理方法,并且不关心它可能包装的内容。
只需为每个对象添加一个新方法和一个新包装器,就可以扩展它以支持任意数量的不同类型的传入对象(只要可以包装它们)。
关于java - 输入流或读取器。具有相同逻辑的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33875393/