- 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
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
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
EnumSyntax(int value)
使用给定的整数值构造新的枚举值。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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
,则此枚举值的整数值与枚举值表中的元素不对应,或枚举值表中的对应元素为null
。 (注:InvalidObjectException
是的子类ObjectStreamException
,该readResolve()
声明扔。)
-
getStringTable
protected String[] getStringTable()
返回此枚举值的枚举类的字符串表。 假设枚举类的整数值位于L .. L + N -1范围内,其中L是getOffset()
返回的值, N是字符串表的长度。 索引i - L的字符串表中的元素是toString()
为整数值为i的枚举值返回的值。 如果任何枚举值未使用上述范围内的整数,请保留相应的表元素null
。默认实现返回
null
。 如果枚举类(类EnumSyntax
的子类)不重写此方法以返回non-null
字符串表,并且子类不重写toString()
方法,则基类toString()
方法将仅返回此枚举值的整数值的字符串表示形式。- 结果
- 字符串表
-
getEnumValueTable
protected EnumSyntax[] getEnumValueTable()
返回此枚举值的枚举类的枚举值表。 假设枚举类的整数值位于L .. L + N -1范围内,其中L是getOffset()
返回的值, N是枚举值表的长度。 索引i - L处的枚举值表中的元素是整数值为i的枚举值对象;readResolve()
方法需要在枚举实例的反序列化过程中保留单例语义。 如果任何枚举值未使用上述范围内的整数,请保留相应的表元素null
。默认实现返回
null
。 如果枚举类(类EnumSyntax的子类)不重写此方法以返回non-null
枚举值表,并且子类不重写readResolve()
方法,则每当从中反序列化枚举实例时,基类readResolve()
方法将抛出异常对象输入流。- 结果
- 价值表
-
getOffset
protected int getOffset()
返回此枚举值的枚举类使用的最小整数值。默认实现返回0.如果枚举类(类
EnumSyntax
的子类)使用从0开始的整数值,则在子类中重写此方法。- 结果
- 最低枚举值的偏移量
-
-