[英]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.