就是InputStream这个类是个抽象类,不能被实例化,也就是说抽象类是没有对象的是吧,可是,那为什么System.in是InputStream的对象呢,难道System.java中的这条语句:public final static InputStream in = nullInputStream();所定义的变量in不是对类InputStream的实例化吗? 谢谢!
什么调用? 我问的不是调用的问题,我问的是InputStream是个抽象类,为什么在System.java里却可以用这条语句:public final static InputStream in = nullInputStream();创建一个InputStream 的对象in,难道这就不属于对抽象类InputStream的实例化了吗?谢谢!
public final static InputStream in = nullInputStream(); 那个nullInputStream()是什么?
查了一下源码: private static InputStream nullInputStream() throws NullPointerException { if (currentTimeMillis() > 0) return null; throw new NullPointerException(); } 这样我也不明白了,等待高手。
private static InputStream nullInputStream() throws NullPointerException { if (currentTimeMillis() > 0) return null; throw new NullPointerException(); } 返回NULL或抛出异常,不会返回InputStream类型
InputStream in = nullInputStream()InputSream = null; 所以没实例化阿
我问的不是调用的问题,我问的是InputStream是个抽象类,为什么在System.java里却可以用这条语句:public final static InputStream in = nullInputStream();创建一个InputStream 的对象in,难道这就不属于对抽象类InputStream的实例化了吗?谢谢!
那个nullInputStream()是什么?
private static InputStream nullInputStream() throws NullPointerException {
if (currentTimeMillis() > 0)
return null;
throw new NullPointerException();
}
这样我也不明白了,等待高手。
if (currentTimeMillis() > 0)
return null;
throw new NullPointerException();
}
返回NULL或抛出异常,不会返回InputStream类型
只是表明 System.in 这个属性是一个System.in类
实际赋值的时候肯定是给一个InputStream具体子类的对象
这样就可以打印出来这个对象真正的类了。那么,楼主问的这个问题也可以这么来看看:
System.out.println("变量System.in引用的对象的类是:" + System.in.getClass().getName());
就可以得到答案了,^_^
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
(这里是要用构造函数InputStreamReader(InputStream inputStream)来构造InputStreamReader的一个对象。)
System.out.println("变量System.in引用的对象的类是:" + System.in.getClass().getName());
可以这样
java.io.BufferedInputStream bi=(java.io.BufferedInputStream)System.in;
----------------------------我这句话说的有问题,应该说System.in是一个BufferedInputStream的对象的引用@_@.
----------------------
在这个里面每new一次产生一个新的实例所以br是BufferedReader
而system.in没有收影响任是BufferedInputStream
-------------------------------------是的,你说的没错,^_^