Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class EnumSyntax extends Object implements Serializable, Cloneable
public class Bach extends EnumSyntax { public static final Bach JOHANN_SEBASTIAN = new Bach(0); public static final Bach WILHELM_FRIEDEMANN = new Bach(1); public static final Bach CARL_PHILIP_EMMANUEL = new Bach(2); public static final Bach JOHANN_CHRISTIAN = new Bach(3); public static final Bach P_D_Q = new Bach(4); private static final String[] stringTable = { "Johann Sebastian Bach", "Wilhelm Friedemann Bach", "Carl Philip Emmanuel Bach", "Johann Christian Bach", "P.D.Q. Bach" }; protected String[] getStringTable() { return stringTable; } private static final Bach[] enumValueTable = { JOHANN_SEBASTIAN, WILHELM_FRIEDEMANN, CARL_PHILIP_EMMANUEL, JOHANN_CHRISTIAN, P_D_Q }; protected EnumSyntax[] getEnumValueTable() { return enumValueTable; } }Можно тогда записать код, который использует
==
и !=
операторы, чтобы протестировать перечислимые величины; например: Bach theComposer; . . . if (theComposer == Bach.JOHANN_SEBASTIAN) { System.out.println ("The greatest composer of all time!"); }
equals()
метод для перечисления class только делает тест для идентичных объектов (==
). Можно преобразовать перечислимую величину в строку, вызывая
. Строка получается из таблицы, предоставленной перечислением class. toString()
Под капотом перечислимая величина является только целым числом, различным целым числом для каждой перечислимой величины в пределах перечисления class. Можно получить целочисленное значение перечислимой величины, вызывая
. Целочисленное значение перечислимой величины устанавливается, когда оно создается (см. getValue()
). Так как конструктор защищается, единственные возможные перечислимые величины являются одноэлементными объектами, объявленными в перечислении class; во время выполнения не могут быть созданы дополнительные перечислимые величины. EnumSyntax(int)
Можно определить подкласс перечисления class, который расширяет это с помощью дополнительных перечислимых величин. Целочисленные значения перечислимых величин подкласса не должны быть отличными от целочисленных значений перечислимых величин суперкласса; ==
, !=
, equals()
, и toString()
методы будут все еще работать должным образом, даже если подкласс будет использовать некоторые из тех же самых целочисленных значений как суперкласс. Однако, приложение, в котором перечисление используются class и подкласс, возможно, должно иметь отличные целочисленные значения в суперклассе и подклассе.
Модификатор | Конструктор и Описание |
---|---|
protected |
EnumSyntax(int value)
Создайте новую перечислимую величину с данным целочисленным значением.
|
Модификатор и Тип | Метод и Описание |
---|---|
Объект |
clone()
Возвращает клона этой перечислимой величины, чтобы сохранить семантику перечислимых величин, тот же самый объект как эта перечислимая величина.
|
protected EnumSyntax[] |
getEnumValueTable()
Возвращает таблицу перечислимой величины для перечисления этой перечислимой величины class.
|
protected int |
getOffset()
Возвращает самое низкое целочисленное значение, используемое перечислением этой перечислимой величины class.
|
protected String[] |
getStringTable()
Возвращает таблицу строк для перечисления этой перечислимой величины class.
|
int |
getValue()
Возвраты целочисленное значение этой перечислимой величины.
|
int |
hashCode()
Возвращает значение хэш-кода для этой перечислимой величины.
|
protected Object |
readResolve()
Во время объектного ввода преобразуйте этот десериализованный экземпляр перечисления в надлежащую перечислимую величину, определенную в атрибуте перечисления class.
|
Строка |
toString()
Возвращает строковое значение, соответствующее этой перечислимой величине.
|
protected EnumSyntax(int value)
value
- Целочисленное значение.public int getValue()
public Object clone()
public int hashCode()
hashCode
в class Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public String toString()
protected Object readResolve() throws ObjectStreamException
getEnumValueTable()
, где я - целочисленное значение этой перечислимой величины, и L является значением, возвращенным getOffset()
.ObjectStreamException
- если поток не может быть десериализованInvalidObjectException
- Брошенный, если таблица перечислимой величины является нулем, целочисленное значение этой перечислимой величины не соответствует элементу в таблице перечислимой величины, или соответствующий элемент в таблице перечислимой величины является нулем. (Отметьте: InvalidObjectException
подкласс ObjectStreamException
, который readResolve()
как объявляют, бросает.)protected String[] getStringTable()
getOffset()
и N является длиной таблицы строк. Элемент в таблице строк в индексирует i-L, значение, возвращенное toString()
для перечислимой величины, целочисленное значение которой - я. Если целое число в пределах вышеупомянутого диапазона не используется никакой перечислимой величиной, оставьте соответствующий табличный нуль элемента. Реализация по умолчанию возвращает нуль. Если перечисление, class (подкласс class EnumSyntax) не переопределяет этот метод, чтобы возвратить таблицу непустой строки, и подкласс, не переопределяет
метод, основной class toString()
метод возвратит только строковое представление целочисленного значения этой перечислимой величины.toString()
protected EnumSyntax[] getEnumValueTable()
getOffset()
и N является длиной таблицы перечислимой величины. Элемент в таблице перечислимой величины в индексирует i-L, объект перечислимой величины, целочисленное значение которого - я; readResolve()
метод нуждается в этом, чтобы сохранить одноэлементную семантику во время десериализации экземпляра перечисления. Если целое число в пределах вышеупомянутого диапазона не используется никакой перечислимой величиной, оставьте соответствующий табличный нуль элемента. Реализация по умолчанию возвращает нуль. Если перечисление, class (подкласс class EnumSyntax) не переопределяет этот метод, чтобы возвратить ненулевую таблицу перечислимой величины, и подкласс, не переопределяет
метод, основной class readResolve()
метод выдаст исключение всякий раз, когда экземпляр перечисления десериализовывается от объектного входного потока.readResolve()
protected int getOffset()
Реализация по умолчанию возвращается 0. Если перечисление, в котором class (подкласс class EnumSyntax) использует целочисленные значения, запускающиеся кроме 0, переопределяет этот метод в подклассе.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92