程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 抽象類-System.in輸入流問題,in類成員屬性實例化成為了InputStream

抽象類-System.in輸入流問題,in類成員屬性實例化成為了InputStream

編輯:編程綜合問答
System.in輸入流問題,in類成員屬性實例化成為了InputStream

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方法,是調用本地代碼的,這些代碼很可能是由虛擬機來調用的.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved