当前位置: 代码迷 >> J2SE >> System.in对象是怎样初始化的解决方案
  详细解决方案

System.in对象是怎样初始化的解决方案

热度:61   发布时间:2016-04-24 02:05:44.0
System.in对象是怎样初始化的
不知道大家看了System类的源码没有,有个问题始终不懂,还望大家能提点下!
Java code
public final static InputStream in = nullInputStream();private static InputStream nullInputStream() throws NullPointerException {    if (currentTimeMillis() > 0) {        return null;    }    throw new NullPointerException();}

当调用System的静态属性或方法时会初始化里面所有的属性,其中in对象是由静态方法nullInputStream()初始化的,可我不知道这个方法到底启什么作用?in对象到底是怎么初始化的,难道是通过调用native的方法获得的?

------解决方案--------------------
是通过native方法初始化的。
实际上,从java代码中可以跟踪出来,java代码是将System.in初始化为null了。因为in是final的,java语言级别是不能修改的,所以只能通过native方法重新绑定到系统输入。
------解决方案--------------------
《JAVA2核心技术》,小字内容对这个有介绍,2l大虾正解。
  相关解决方案