编码

import java.io.*;

class ioTest1{
   public static void main(String args[]){
      System.out.println(System.in.getClass());
   }
}

返回System.in属于BufferedInputStream类。这是为什么?

由于类SystemSystem.in定义为InputStream,因此我可以看到结果并非并非不可能。但是为什么前面的代码不能返回另一个从InputStream继承的类,例如DataInputStream

最佳答案

正如评论中所解释的,没有什么可以阻止System.in成为DataInputStream,但是鉴于BufferedInputStream是不费吹灰之力的InputStream,它包含数据缓冲(总是一个好主意),因此尽可能提供最通用的类​​型更有意义。 。

然后,如果向程序馈送了管道二进制数据,则开发人员可以使用DataInputStream包装缓冲的流,如果程序正在从用户接收文本数据,则开发人员可以使用InputStreamReader包装。
System.inBufferedInputStream,因为它不需要是其他任何东西。

10-06 13:38
查看更多