2016-08-03 3 views

答えて

0

はい、そうです。

ポイントは、Scannerは、のデータを読み取ることができる「何か」を持ち、そのデータをトークンに処理する方法を知っています。

"何か"は標準入力、ファイル、文字列などです。これらのそれぞれから読み込むための別個のサブクラスはありません。実際、Scannerfinalであるため、拡張することはできません。あなたはnew Scanner(System.in)についての興味深い見つけるかもしれない何

Scannerが直接System.inのホールドを保持していないということです:あなたはconstructor's source codeを見れば、あなたが表示されます。

public Scanner(InputStream source) { 
    this(new InputStreamReader(source),  
     WHITESPACE_PATTERN); 
} 

private Scanner(Readable source, Pattern pattern) { 
    // ... 
    this.source = source; 
    // ... 
} 

source(例えばSystem.inを)に包まれてInputStreamReaderであり、それはによって保持されるであるです。だから、構図、2つのレベルを持っている:

  • ScannerReadableInputStreamReader)を持っています。
  • InputStreamReaderは、InputStream(たとえば、System.in)です。
関連する問題