java中在System类中in字段被声明为InputStream
类的实例化对象,但是InputStream
类为抽象类应该是无法别实例化的,为什么在System
类中被实例化了呢?
在System类中是这样定义in的。
public final static InputStream in = nullInputStream();
nullInputStream是这样实现的:
private static InputStream nullInputStream() throws NullPointerException {
if (currentTimeMillis() > 0)
return null;
throw new NullPointerException();
}
他不是返回null,就是抛出异常,如何初始化in呢?又如何去调用一个抽象方法read()呢?这是个
有趣的问题.不过写java.io相关的应用其实不需要去关心这个问题的.
但我想还是解释一下我对这个out,in的初始化的理解好了
我也看了一下java.lang.System的源代码.
System类里有大量的native方法,是调用本地代码的,这些代码很可能是由虚拟机来调用的.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。