黑马程序员技术交流社区
标题:
在JDK文档查找System.in的疑问
[打印本页]
作者:
戴振良
时间:
2012-4-3 21:19
标题:
在JDK文档查找System.in的疑问
本帖最后由 戴振良 于 2012-4-3 21:43 编辑
没别的,就好奇,想看看源码!结果,看不懂
{:soso__8961432591078930798_3:}
首先我在JDK文档查找System,说in是“标准”输入流,接着我查找in的源码:
public final static InputStream in = nullInputStream();
复制代码
接着,我查找JDK中System的nullInputStream()方法,找不到,接着我查找了nullInputStream()方法的源码,如下:
private static InputStream nullInputStream() throws NullPointerException {
if (currentTimeMillis() > 0) {
return null;
}
throw new NullPointerException();
}
复制代码
这个方法声明抛出异常,为什么调用的时候不需要try、catch语句?
接着我在JDK文档查找了currentTimeMillis() 方法,说是:返回以毫秒为单位的当前时间,源码为:
public static native long currentTimeMillis();
复制代码
至此,回头看看nullInputStream() 方法,“currentTimeMillis() > 0”这个语句应该不会有假的情况出现吧,那就是说都是返回null,如果都是返回空,那这个函数不是多余的吗?直接给in=null就行了。
那么也就是说public final static InputStream in = null;
这个InputStream的引用变量in指向了空,怎么还可以使用InputStream里的方法吗?
作者:
yangshang1
时间:
2012-4-4 07:58
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.NullPointerException
他是运行时异常
作者:
戴振良
时间:
2012-4-4 08:26
yangshang1 发表于 2012-4-4 07:58
java.lang.Object
java.lang.Throwable
java.lang.Exception
哦,谢谢!
作者:
戴振良
时间:
2012-4-10 00:12
至此,回头看看nullInputStream() 方法,“currentTimeMillis() > 0”这个语句应该不会有假的情况出现吧?问题还有些没解决,{:soso__15674501862584447789_3:} 呀!
作者:
戴振良
时间:
2012-4-11 07:51
再顶再顶再顶
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2