java.lang.Object javax.print.attribute.EnumSyntax
public abstract class EnumSyntax
类 EnumSyntax 是一个抽象的基类,它提供所有“类型安全枚举”对象的公共实现。扩展类 EnumSyntax 的枚举类提供一组枚举值(对象),它是该枚举类的单一实例;例如:
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) 使用给定的整数值构造一个新枚举值。 |
方法摘要 | |
---|---|
Object |
clone() 返回此枚举值的一个副本,该副本保留了枚举值的语义,它是与此枚举值相同的对象。 |
protected EnumSyntax[] |
getEnumValueTable() 返回此枚举值的枚举类的枚举值表。 |
protected int |
getOffset() 返回此枚举值的枚举类使用的最小整数值。 |
protected String[] |
getStringTable() 返回此枚举值的枚举类的字符串表。 |
int |
getValue() 返回此枚举值的整数值。 |
int |
hashCode() 返回此枚举值的哈希码值。 |
protected Object |
readResolve() 在对象输入过程中,将此反序列化的枚举实例转换为枚举属性类中定义的适当枚举值。 |
String |
toString() 返回对应于此枚举值的字符串值。 |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
protected EnumSyntax(int value)
value
- 整数值。
方法详细信息 |
---|
public int getValue()
public Object clone()
public int hashCode()
Object.equals(java.lang.Object)
,
Hashtable
public String toString()
protected Object readResolve() throws ObjectStreamException
getEnumValueTable()
返回的枚举值表中的索引
i-
L 处,其中
i 是此枚举值的整数值,
L 是
getOffset()
返回的值。
ObjectStreamException
- 如果无法对流反序列化
InvalidObjectException
- 如果枚举值表为 null,此枚举值的整数值与枚举值表中的元素不对应,或枚举值表中的对应元素为 null,则抛出该异常。(注:
InvalidObjectException
是
ObjectStreamException
的一个子类,
ObjectStreamException
由
readResolve()
声明抛出。
protected String[] getStringTable()
getOffset()
返回的值,
N 是字符串表的长度。字符串表中索引
i-
L 处的元素是
toString()
针对其整数值是
i 的枚举值所返回的值。如果任何枚举值都不使用上面范围中的整数,则对应的表元素保持为 null。
默认实现返回 null。如果枚举类(类 EnumSyntax 的子类)不重写此方法,以返回非 null 字符串表,并且子类不重写
方法,则基类 toString()
方法将仅返回此枚举值的整数值的字符串表示形式。 toString()
protected EnumSyntax[] getEnumValueTable()
getOffset()
返回的值,
N 是枚举值表的长度。枚举值表中索引
i-
L 处的元素是其整数值是
i 的枚举值对象;在枚举实例的反序列化过程中,
readResolve()
方法需要此元素来保持单一语义。如果任何枚举值都不使用上面范围中的整数,则对应的表元素保持为 null。
默认实现返回 null。如果枚举类(类 EnumSyntax 的子类)不重写此方法,以返回非 null 枚举值表,并且子类不重写
方法,则每当从对象输入流反序列化枚举实例时,基类 readResolve()
方法将抛出一个异常。 readResolve()
protected int getOffset()
默认实现返回 0。如果枚举类(类 EnumSyntax 的子类)使用以非 0 开始的整数值,则重写子类中的此方法。