编码
import java.io.*;
class ioTest1{
public static void main(String args[]){
System.out.println(System.in.getClass());
}
}
返回
System.in
属于BufferedInputStream
类。这是为什么?由于类
System
将System.in
定义为InputStream
,因此我可以看到结果并非并非不可能。但是为什么前面的代码不能返回另一个从InputStream
继承的类,例如DataInputStream
? 最佳答案
正如评论中所解释的,没有什么可以阻止System.in
成为DataInputStream
,但是鉴于BufferedInputStream
是不费吹灰之力的InputStream
,它包含数据缓冲(总是一个好主意),因此尽可能提供最通用的类型更有意义。 。
然后,如果向程序馈送了管道二进制数据,则开发人员可以使用DataInputStream
包装缓冲的流,如果程序正在从用户接收文本数据,则开发人员可以使用InputStreamReader
包装。System.in
是BufferedInputStream
,因为它不需要是其他任何东西。