- java.lang.Object
-
- javax.print.attribute.EnumSyntax
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
- 已知直接子类:
-
Chromaticity
,ColorSupported
,Compression
,DialogTypeSelection
,Fidelity
,Finishings
,JobSheets
,JobState
,JobStateReason
,Media
,MultipleDocumentHandling
,OrientationRequested
,PDLOverrideSupported
,PresentationDirection
,PrinterIsAcceptingJobs
,PrinterState
,PrinterStateReason
,PrintQuality
,ReferenceUriSchemesSupported
,Severity
,SheetCollate
,Sides
public abstract class EnumSyntax extends Object implements Serializable, Cloneable
类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()
方法仍然正常工作,即使子类使用一些相同的整数值作为超的。 但是,使用枚举类和子类的应用程序可能需要在超类和子类中具有不同的整数值。- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
EnumSyntax(int value)
用给定的整数值构造一个新的枚举值。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 Object
clone()
返回此枚举值的克隆,其中保留枚举值的语义是与此枚举值相同的对象。protected EnumSyntax[]
getEnumValueTable()
返回枚举值枚举类的枚举值表。protected int
getOffset()
返回此枚举值枚举类使用的最小整数值。protected String[]
getStringTable()
返回枚举值枚举类的字符串表。int
getValue()
返回此枚举值的整数值。int
hashCode()
返回此枚举值的哈希码值。protected Object
readResolve()
在对象输入期间,将此反序列化枚举实例转换为枚举属性类中定义的适当枚举值。String
toString()
返回与此枚举值对应的字符串值。
-
-
-
方法详细信息
-
getValue
public int getValue()
返回此枚举值的整数值。- 结果
- 价值
-
clone
public Object clone()
返回此枚举值的克隆,其中保留枚举值的语义是与此枚举值相同的对象。
-
hashCode
public int hashCode()
返回此枚举值的哈希码值。 哈希码只是这个枚举值的整数值。- 重写:
-
hashCode
在Object
- 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
readResolve
protected Object readResolve() throws ObjectStreamException
在对象输入期间,将此反序列化枚举实例转换为枚举属性类中定义的适当枚举值。- 结果
-
枚举单例值存储在由
getEnumValueTable()
返回的枚举值表中的索引 i - L 处 ,其中 i是此枚举值的整数值, L是getOffset()
返回的值。 - 异常
-
ObjectStreamException
- 如果流不能反序列化 -
InvalidObjectException
- 如果枚举值表为null,则枚举值的整数值与枚举值表中的元素不对应,或枚举值表中的相应元素为空。 (注:InvalidObjectException
是的子类ObjectStreamException
,该readResolve()
声明扔。)
-
getStringTable
protected String[] getStringTable()
返回枚举值枚举类的字符串表。 枚举类的整数值假定在L .. L + N -1的范围内,其中L是由getOffset()
返回的值, N是字符串表的长度。 索引i - L中的字符串表中的元素是整数值为i的枚举值的返回值为toString()
。 如果任何枚举值都不使用上述范围内的整数,请将相应的表格元素留空。默认实现返回null。 如果枚举类(EnumSyntax类的子类)不覆盖此方法以返回非空字符串表,并且子类不会覆盖
toString()
方法,则基类toString()
方法将仅返回此枚举值的字符串表示形式整数值。- 结果
- 字符串表
-
getEnumValueTable
protected EnumSyntax[] getEnumValueTable()
返回枚举值枚举类的枚举值表。 枚举类的整数值假定在L .. L + N -1的范围内,其中L是由getOffset()
返回的值, N是枚举值表的长度。 索引i - L的枚举值表中的元素是整数值为i的枚举值对象;readResolve()
方法需要这样来在枚举实例的反序列化过程中保留单例语义。 如果任何枚举值都不使用上述范围内的整数,请将相应的表格元素留空。默认实现返回null。 如果枚举类(EnumSyntax类的子类)不覆盖此方法以返回非空枚举值表,并且子类不覆盖
readResolve()
方法,则基类readResolve()
方法将在枚举实例为从对象输入流反序列化。- 结果
- 值表
-
getOffset
protected int getOffset()
返回此枚举值枚举类使用的最小整数值。默认实现返回0.如果枚举类(EnumSyntax类的子类)使用从0以外的整数值,请在子类中覆盖此方法。
- 结果
- 最低枚举值的偏移量。
-
-