2013-09-07 1 views
0

Это то, что я всегда было интересно, так как мой первый «Hello World»Почему «из/в» PrintStream области разработан в Java, чтобы ссылаться непосредственно, а не использовать поглотитель

Почему из Явы PrintStream статическое поле, предназначенное для использования вместо того, чтобы делать что-то вроде метода getOut(), который возвращает PrintStream. Все, что я узнал о хорошей практике кодирования, кричит, что это лучший способ сделать что-то. Почему Java не делает этого?

+0

Публичные переменные - это не конец света, если они «окончательные». –

ответ

1

Непосредственная причина в том, что потоки System предшествуют модели JavaBeans с номенклатурой get/set/is, которая была добавлена ​​в 1.1; потоки System полностью возвращаются к 1.0, прежде чем даже внутренние классы, поэтому обратная совместимость требует непрерывности.

Связанная причина заключается в том, что призывы к геттерам не могут быть столь же эффективными, как прямые ссылки на поле, даже если методы являются final, а так как вывод печати настолько распространен, вполне вероятно, что даже сегодня эти поля будут использоваться непосредственно.

+0

Интерфейсы (например [этот] (http://docs.oracle.com/javase/7/docs/api/java/util/Observer.html)) существуют в Java 1.0. – VGR

+0

@VGR Вы правы; Вместо этого я помню все внутренние классы. – chrylis