java.lang.Object
javax.print.attribute.EnumSyntax
- 所有已实现的接口:
-
Serializable
,Cloneable
- 直接已知的子类:
-
Chromaticity
,ColorSupported
,Compression
,DialogTypeSelection
,Fidelity
,Finishings
,JobSheets
,JobState
,JobStateReason
,Media
,MultipleDocumentHandling
,OrientationRequested
,PDLOverrideSupported
,PresentationDirection
,PrinterIsAcceptingJobs
,PrinterState
,PrinterStateReason
,PrintQuality
,ReferenceUriSchemesSupported
,Severity
,SheetCollate
,Sides
类
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 ("史上最伟大的作曲家!"); }枚举类的
equals()
方法只是对相同对象(==
)进行测试。
您可以通过调用toString()
将枚举值转换为字符串。该字符串是从枚举类提供的表中获取的。
在幕后,枚举值只是一个整数,对于枚举类中的每个枚举值,都有一个不同的整数。您可以通过调用getValue()
来获取枚举值的整数值。枚举值的整数值在构造时确定(参见EnumSyntax(int)
)。由于构造函数是受保护的,因此在枚举类中声明的唯一可能的枚举值是在枚举类中声明的单例对象;不能在运行时创建额外的枚举值。
您可以定义一个枚举类的子类,通过附加枚举值来扩展它。子类的枚举值的整数值不需要与超类的枚举值的整数值不同;即使子类使用与超类相同的一些整数值,==
、!=
、equals()
和toString()
方法仍将正常工作。但是,使用枚举类和子类的应用程序可能需要在超类和子类中具有不同的整数值。
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionclone()
返回此枚举值的克隆,为了保留枚举值的语义,它与此枚举值相同。protected EnumSyntax[]
返回此枚举值的枚举值表,用于此枚举值的枚举类。protected int
返回此枚举值的枚举类使用的最低整数值。protected String[]
返回此枚举值的枚举类的字符串表。int
getValue()
返回此枚举值的整数值。int
hashCode()
返回此枚举值的哈希码值。protected Object
在对象输入期间,将此反序列化的枚举实例转换为枚举属性类中定义的适当枚举值。toString()
返回与此枚举值对应的字符串值。
-
Constructor Details
-
EnumSyntax
protected EnumSyntax(int value) 使用给定的整数值构造一个新的枚举值。- 参数:
-
value
- 整数值
-
-
Method Details
-
getValue
public int getValue()返回此枚举值的整数值。- 返回:
- 该值
-
clone
返回此枚举值的克隆,为了保留枚举值的语义,它与此枚举值相同。 -
hashCode
public int hashCode()返回此枚举值的哈希码值。哈希码只是此枚举值的整数值。 -
toString
返回与此枚举值对应的字符串值。 -
readResolve
在对象输入期间,将此反序列化的枚举实例转换为枚举属性类中定义的适当枚举值。- 返回:
-
存储在由
getEnumValueTable()
返回的枚举值表中索引i-L处的枚举单例值,其中i是此枚举值的整数值,L是由getOffset()
返回的值 - 抛出:
-
ObjectStreamException
- 如果流无法反序列化 -
InvalidObjectException
- 如果枚举值表为null
,此枚举值的整数值不对应于枚举值表中的元素,或枚举值表中的相应元素为null
。(注意:InvalidObjectException
是ObjectStreamException
的子类,readResolve()
声明为抛出。)
-
getStringTable
返回此枚举值的枚举类的字符串表。假定枚举类的整数值位于 L..L+N-1 范围内,其中 L 是由getOffset()
返回的值,N 是字符串表的长度。字符串表中索引为 i-L 的元素是整数值为 i 的枚举值的toString()
返回的值。如果上述范围内的整数没有被任何枚举值使用,则将相应的表元素保留为null
。默认实现返回
null
。如果枚举类(EnumSyntax
类的子类)未覆盖此方法以返回非null
字符串表,并且子类未覆盖toString()
方法,则基类toString()
方法将仅返回此枚举值的整数值的字符串表示。- 返回:
- 字符串表
-
getEnumValueTable
返回此枚举值的枚举类的枚举值表。假定枚举类的整数值位于 L..L+N-1 范围内,其中 L 是由getOffset()
返回的值,N 是枚举值表的长度。枚举值表中索引为 i-L 的元素是整数值为 i 的枚举值对象;readResolve()
方法需要此来在反序列化枚举实例时保留单例语义。如果上述范围内的整数没有被任何枚举值使用,则将相应的表元素保留为null
。默认实现返回
null
。如果枚举类(EnumSyntax
类的子类)未覆盖此方法以返回非null
枚举值表,并且子类未覆盖readResolve()
方法,则基类readResolve()
方法将在从对象输入流反序列化枚举实例时抛出异常。- 返回:
- 值表
-
getOffset
protected int getOffset()返回此枚举值的枚举类使用的最低整数值。默认实现返回 0。如果枚举类(
EnumSyntax
类的子类)使用非0起始的整数值,请在子类中覆盖此方法。- 返回:
- 最低枚举值的偏移量
-