本帖最后由 戴振良 于 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里的方法吗? |