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 ("The greatest composer of all time!"); }枚举类的
equals()
方法只是对相同的对象 (==
) 进行测试。
您可以通过调用 toString()
将枚举值转换为字符串。该字符串是从枚举类提供的表中获取的。
在幕后,枚举值只是一个整数,枚举类中的每个枚举值都是一个不同的整数。您可以通过调用 getValue()
获取枚举值的整数值。枚举值的整数值在构造时确定(请参阅 EnumSyntax(int)
)。由于构造函数是受保护的,因此唯一可能的枚举值是在枚举类中声明的单例对象;无法在运行时创建额外的枚举值。
您可以定义一个枚举类的子类,用附加的枚举值扩展它。子类的枚举值的整数值不需要与超类的枚举值的整数值不同; ==
、!=
、equals()
和 toString()
方法仍然可以正常工作,即使子类使用一些与超类相同的整数值。但是,使用枚举类和子类的应用程序可能需要在超类和子类中具有不同的整数值。
- 参见:
-
构造方法总结
构造方法 -
方法总结
-
构造方法详细信息
-
EnumSyntax
protected EnumSyntax(int value) 使用给定的整数值构造一个新的枚举值。- 参数:
value
- 整数值
-
-
方法详情
-
getValue
public int getValue()返回此枚举值的整数值。- 返回:
- 值
-
clone
返回此枚举值的克隆,它保留枚举值的语义是与此枚举值相同的对象。 -
hashCode
public int hashCode()返回此枚举值的哈希码值。哈希码就是这个枚举值的整数值。 -
toString
返回与此枚举值对应的字符串值。 -
readResolve
在对象输入期间,将此反序列化的枚举实例转换为枚举属性类中定义的适当枚举值。- 返回:
-
存储在索引处的枚举单例值i-L在
getEnumValueTable()
返回的枚举值表中,其中i是这个枚举值的整数值和L是getOffset()
返回的值 - 抛出:
ObjectStreamException
- 如果流不能被反序列化InvalidObjectException
- 如果枚举值表为null
,则此枚举值的整数值不对应枚举值表中的元素,或者枚举值表中对应的元素为null
。 (注意:InvalidObjectException
是ObjectStreamException
的子类,readResolve()
被声明为抛出。)
-
getStringTable
返回此枚举值的枚举类的字符串表。假定枚举类的整数值位于范围内L..L+N-1,其中L是getOffset()
返回的值和N是字符串表的长度。索引处的字符串表中的元素i-L是toString()
为整数值为枚举值返回的值i.如果上述范围内的整数未被任何枚举值使用,则保留相应的表元素null
。默认实现返回
null
。如果枚举类(类EnumSyntax
的子类)不重写此方法以返回non-null
字符串表,并且子类不重写toString()
方法,则基类toString()
方法将仅返回此枚举值的整数值的字符串表示形式.- 返回:
- 字符串表
-
getEnumValueTable
返回此枚举值的枚举类的枚举值表。假定枚举类的整数值位于范围内L..L+N-1,其中L是getOffset()
返回的值和N是枚举值表的长度。索引处枚举值表中的元素i-L是枚举值对象,其整数值为ireadResolve()
方法需要它来在枚举实例的反序列化期间保留单例语义。如果上述范围内的整数未被任何枚举值使用,则保留相应的表元素null
。默认实现返回
null
。如果枚举类(类EnumSyntax的子类)没有重写该方法返回一个non-null
枚举值表,且子类没有重写readResolve()
方法,每当枚举实例被反序列化时,基类readResolve()
方法将抛出异常对象输入流。- 返回:
- 值表
-
getOffset
protected int getOffset()返回此枚举值的枚举类使用的最小整数值。默认实现返回 0。如果枚举类(类
EnumSyntax
的子类)使用从 0 以外的整数值开始,则在子类中覆盖此方法。- 返回:
- 最低枚举值的偏移量
-