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()
метод для класса перечисления только делает тест для идентичных объектов (==
). Можно преобразовать перечислимую величину в строку, вызывая
. Строка получается из таблицы, предоставленной классом перечисления. toString()
Под капотом перечислимая величина является только целым числом, различным целым числом для каждой перечислимой величины в пределах класса перечисления. Можно получить целочисленное значение перечислимой величины, вызывая
. Целочисленное значение перечислимой величины устанавливается, когда оно создается (см. getValue()
). Так как конструктор защищается, единственные возможные перечислимые величины являются одноэлементными объектами, объявленными в классе перечисления; во время выполнения не могут быть созданы дополнительные перечислимые величины. EnumSyntax(int)
Можно определить подкласс класса перечисления, который расширяет его с помощью дополнительных перечислимых величин. Целочисленные значения перечислимых величин подкласса не должны быть отличными от целочисленных значений перечислимых величин суперкласса; ==
, !=
, equals()
, и toString()
методы будут все еще работать должным образом, даже если подкласс будет использовать некоторые из тех же самых целочисленных значений как суперкласс. Однако, приложение, в котором используются класс перечисления и подкласс, возможно, должно иметь отличные целочисленные значения в суперклассе и подклассе.
Модификатор | Конструктор и Описание |
---|---|
protected |
EnumSyntax(int value)
Создайте новую перечислимую величину с данным целочисленным значением.
|
Модификатор и Тип | Метод и Описание |
---|---|
Объект |
clone()
Возвращает клона этой перечислимой величины, чтобы сохранить семантику перечислимых величин, тот же самый объект как эта перечислимая величина.
|
protected EnumSyntax[] |
getEnumValueTable()
Возвращает таблицу перечислимой величины для класса перечисления этой перечислимой величины.
|
protected int |
getOffset()
Возвращает самое низкое целочисленное значение, используемое классом перечисления этой перечислимой величины.
|
protected String[] |
getStringTable()
Возвращает таблицу строк для класса перечисления этой перечислимой величины.
|
int |
getValue()
Возвраты целочисленное значение этой перечислимой величины.
|
int |
hashCode()
Возвращает значение хэш-кода для этой перечислимой величины.
|
protected Object |
readResolve()
Во время объектного ввода преобразуйте этот десериализованный экземпляр перечисления в надлежащую перечислимую величину, определенную в классе атрибута перечисления.
|
Строка |
toString()
Возвращает строковое значение, соответствующее этой перечислимой величине.
|
protected EnumSyntax(int value)
value
- Целочисленное значение.public int getValue()
public Object clone()
public int hashCode()
hashCode
в классе 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()
для перечислимой величины, целочисленное значение которой - я. Если целое число в пределах вышеупомянутого диапазона не используется никакой перечислимой величиной, оставьте соответствующий табличный нуль элемента. Реализация по умолчанию возвращает нуль. Если класс перечисления (подкласс класса EnumSyntax) не переопределяет этот метод, чтобы возвратить таблицу непустой строки, и подкласс не переопределяет
метод, базовый класс toString()
метод возвратит только строковое представление целочисленного значения этой перечислимой величины.toString()
protected EnumSyntax[] getEnumValueTable()
getOffset()
и N является длиной таблицы перечислимой величины. Элемент в таблице перечислимой величины по индексу i-L является объектом перечислимой величины, целочисленное значение которого - я; readResolve()
метод нуждается в этом, чтобы сохранить одноэлементную семантику во время десериализации экземпляра перечисления. Если целое число в пределах вышеупомянутого диапазона не используется никакой перечислимой величиной, оставьте соответствующий табличный нуль элемента. Реализация по умолчанию возвращает нуль. Если класс перечисления (подкласс класса EnumSyntax) не переопределяет этот метод, чтобы возвратить ненулевую таблицу перечислимой величины, и подкласс не переопределяет
метод, базовый класс readResolve()
метод выдаст исключение всякий раз, когда экземпляр перечисления десериализовывается от объектного входного потока.readResolve()
protected int getOffset()
Реализация по умолчанию возвращается 0. Если класс перечисления (подкласс класса EnumSyntax) использует целочисленные значения, запускающиеся в кроме 0, переопределите этот метод в подклассе.
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.