Доброго времени суток, вопрос на самом деле очень простой: "Зачем?". Зачем её писать? В частности метод writeMessage(). К readString() readInt() претензий нет. Которую задачу меня насильно заставляют его вызывать.
Для себя определил такие варианты:
1) Его поведение (метода) можно будет легко изменить. Инкапсуляция, все дела. Только для чего менять поведения вывода в консоль я так и не понял.
2) Из-за того, что я теоретически могу переопределить System.out. Но это тоже притянуто за уши.
Всё. Я написал однострочный метод, который делает то же, что и sout, только его дольше вызывать (sout я напишу банально быстрее). Попутно породив новую сущность, которую нужно держать в голове.
Собственно виновник торжества:
public class ConsoleHelper {
private static BufferedReader bis = new BufferedReader(new InputStreamReader(System.in));
public static void writeMessage(String message) {
System.out.println(message);
}
public static String readString() throws IOException {
return bis.readLine();
}
public static int readInt() throws IOException {
String text = readString();
return Integer.parseInt(text.trim());
}
}
UPD:
Этот же "гениальный" метод мы вызываем в блоке catch. Т.е. выводим сообщение в stdout, а не в stderr ... Это вообще законно:)