繁体   English   中英

System.in如何工作?

[英]How System.in works?

我很怀疑System类in InputStream类型中是否具有静态字段。 InputStream是一个抽象类。 Java文档说, System.in stream is already open and ready to supply input data.

抽象类在实现之前无法初始化。 但是输入流已经由各种类实现,如AudioInputStream,ByteArrayInputStream,FileInputStream,FilterInputStream等。所以当我们使用System.in时,哪个类的对象被实例化? 如果不是,它是否会创建任何匿名类?

请分享您的观点..!

System.in关联的对象的类是InputStream的子类。 没有更多指定1

但我们可以测试一下:

$ cat Test.java
public class Test {
  public static void main(String[] args) {
    System.out.println(System.in.getClass());
  }
}
$ javac Test.java 
$ java Test 
class java.io.BufferedInputStream
$ 

当然,这可能因Java的一个版本而异。 以上是Java 8。


1 - 由于未指定用于System.in的类,因此不宜编写依赖于经验观察的代码,即始终使用相同的类。 但是,我不希望提供Java实现的人改变这个细节......因为人们可能会将类的硬连线知识带入他们的代码中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM