【发布时间】:2012-07-05 20:01:45
【问题描述】:
在一个方法中,我需要一个将 DataInputStream 包装为参数的 BufferedReader。我想这样声明方法:
public void firstPass(BufferedReader inStream){ // some code ... }
但我不知道如何检查 inStream 是否包装了 DataInputStream。
我试过了
public static void firstPass(BufferedReader inStream){
if (inStream instanceof DataInputStream){
}
}
但代码无法编译(Eclispe 不接受代码:“不兼容的条件操作数类型 BufferedReader 和 DataInputStream”)。
为什么需要这个?因为我想使用相同的变量 inStream :
- BufferedReader 中的方法 readLine()
- DataInputStream 中的 readDouble() 方法
所以我需要一个链接两个类的流。
我正在使用 Java 7 JDK 编程。
有人可以帮帮我吗?提前致谢。
【问题讨论】:
-
好吧,装饰器模式的重点是你不关心
InputStream的实现是什么。为什么需要检查这个? -
@Tudor感谢您的回答,请检查已编辑的问题。
-
嗯...但是如果你只得到一个
BufferedReader,你怎么能使用底层DataInputStream的readDouble呢? -
这就是我面临的问题:实际上我读取了一个写为文本文件的值文件,但现在我明白我的处理方法不好 => 将其用作文本流,拆分“单词”并使用正确的包装器解析每个单词。
-
如果你告诉我们你打算如何使用这个
BufferedReader,我们可以推荐一个替代方案。