2015-11-23 1 views
2

Документация о ScrollPane не использует значения перечисления для политики прокрутки (и не имеет другого класса для значений постоянного поля), есть ли причина для этого?Почему не некоторые из постоянных полей в значениях enum java?

Есть ли более глубокое значение значений для этих значений постоянного поля или они только в порядке возрастания? Потому что, на мой взгляд, наличие такого конструктора, как public ScrollPane(int scrollbarDisplayPolicy), выглядит не столь значимым, как, например, public ScrollPane(ScrollPane.ScrollbarDisplayPolicy scrollbarDisplayPolicy)

Или это просто не многократные перечисления с несколькими значениями?

ответ

3

Ответ прост: enum s были введены только в Java 5, и эти константы старше этого.

К сожалению, нет способа ретро-соответствия API без нарушения совместимости кода. (Retro-fitting API для новых функций звучит как невозможная задача в целом, но примером того, когда это было возможно, является введение дженериков, также в Java 5.)

+0

Знаете ли вы, что они используют перечисления для классов, которые они добавили после введения перечислений или они все еще придерживаются старого способа? – Marcono1234

+1

@ Marcono1234 Нет, они придерживаются старого пути, насколько я могу судить, например [здесь] (http://docs.oracle.com/javase/8/docs/api/javax/swing/JLayer.html# getScrollableBlockIncrement-java.awt.Rectangle-INT-int-). Но в совершенно новых API, таких как JavaFX, перечисления являются очень нормой. – biziclop

2

Java enum был представлен в версии 1.5.

Так что большинство библиотек, которые были разработаны до использования Java 1.5, static final константы.

Например, log4j levels также являются общедоступными статическими конечными значениями целочисленного значения.

+1

И 'java.util.logging', введенный в 1.4, использует идиому класса enum pre-Java 5 typeafe. – biziclop

 Смежные вопросы

  • Нет связанных вопросов^_^