我對以後的事弄得一點點:投射到讀者或創建一個新的讀者
public randomConstructor(Reader r) {
this.bufferedreader = new BufferedReader(r);
}
這似乎是合乎邏輯的,如果你想使用一個BufferedReader,你應該建立一個與使用讀者作爲參數。然而,我看到類似的東西:
public randomConstructor(Reader r) {
this.bufferedreader = (BufferedReader) r;
}
如果r不是一個BufferedReader本身,它顯然不工作。
對不起,如果我不能給你一個更好的例子,但我可以記住,有一個例子,它有實際意義,把它投給讀者。有沒有例外,它是有道理的?
編輯:BufferedReader中顯然是我掙扎,找不到在哪你知道r
是BufferedReader
型的,但仍然有很好的理由來的情景類型「的BufferedReader」 :)
在這種情況下鑄造是相當危險的,因爲你打開了一個'ClassCastException'。如果你知道你將需要一個'BufferedReader',那麼你最好使參數類型反映它,或者自己創建一個,就像你在第一個例子中做的那樣。 – azurefrog 2014-09-03 18:39:49
@azurefrog我看到了,所以在一天結束時,這只是一個愚蠢的想法,對吧? – Goldi 2014-09-03 18:40:46
@DennisvonEich A.一個'Reader'不能是'BufferedReader',並且B.你不應該有一個只讀對象的構造函數(比如Streams)。更好地使用源讀取。 – Hannes 2014-09-03 18:48:12