BufferedReader System.in IOException
Хочу разобраться, столкнулся с очень интересной проблемой. Это магия работы ридера System.in или что-то другое?
Есть некий класс, внутри метода которого создается ридер и цикл. Внутри цикла у пользователя спрашиваются какие-то данные и в зависимости от этих данных вызывается тот или иной метод у другого класса.
void someMethod() {
boolean myBoolean = false;
AppManager appManager = new AppManager();
Bufferedreader consolerReader = new BufferedReader(new InputstreamReader(System.in));
while (!myBoolean) {
System.out.println(".......?");
String userAnswer = consoleReader.readLine();
if (userAnswer.equals("Value")) {
appManager.method();
}
}
}
Внутри метода другого класса создается еще один ридер.
void anotherMethod() {
Bufferedreader consolerReader = new BufferedReader(new InputstreamReader(System.in));
do something...
consoleReader.close();
}
Если этот ридер закрыть, то закрывается и первый ридер. Если не закрывать - то все будет работать. Вопрос: при создании еще одного идентичного ридера System.in второй ридер получает ссылку на первый? Получается что так. Но почему это происходит? Почему если я в первом методе создам любой другой объект и во втором методе такой же объект - это будут разные объекты в памяти? Даже если сделать 2 ридера, но не System.in, а, к примеру, разных файлов - все должно работать(я полагаю).