我对以后的事弄得一点点:投射到读者或创建一个新的读者
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