Я немного смущен следующей вещи:Кастинг для читателя или создания нового читателя
public randomConstructor(Reader r) {
this.bufferedreader = new BufferedReader(r);
}
Казалось логичным, что если вы хотите использовать BufferedReader вы должны создать и использовать читателя в качестве параметра. Тем не менее, я увидел что-то вроде этого:
public randomConstructor(Reader r) {
this.bufferedreader = (BufferedReader) r;
}
Obivously он не работает, если г не является само по себе BufferedReader.
Извините, если я не могу дать вам лучший пример, но я помню, что был пример, когда на самом деле имеет смысл бросить его читателю. Есть ли какое-либо исключение, где это имеет смысл?
EDIT: BufferedReader, очевидно, является частной переменной типа «BufferedReader» :)
Кастинг в этом случае довольно опасен, так как вы открываете себя до класса ClassCastException. Если вы знаете, что вам понадобится «BufferedReader», вам всегда будет лучше, если тип параметра отражает это или создаст его самостоятельно, как в первом примере. – azurefrog
@azurefrog Я вижу, поэтому в конце дня это просто глупая идея, верно? – Goldi
@DennisvonEich A. «Читатель» не должен быть «BufferedReader» и B. У вас не должно быть конструктора с объектом для чтения (например, Streams). Лучше использовать источник для чтения. – Hannes