模块  java.desktop
软件包  javax.print.attribute

Class EnumSyntax

  • 实现的所有接口
    SerializableCloneable
    已知直接子类:
    ChromaticityColorSupportedCompressionDialogTypeSelectionFidelityFinishingsJobSheetsJobStateJobStateReasonMediaMultipleDocumentHandlingOrientationRequestedPDLOverrideSupportedPresentationDirectionPrinterIsAcceptingJobsPrinterStatePrinterStateReasonPrintQualityReferenceUriSchemesSupportedSeveritySheetCollateSides

    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
    • 构造方法详细信息

      • EnumSyntax

        protected EnumSyntax​(int value)
        使用给定的整数值构造新的枚举值。
        参数
        value - 整数值
    • 方法详细信息

      • getValue

        public int getValue()
        返回此枚举值的整数值。
        结果
        价值
      • clone

        public Object clone()
        返回此枚举值的克隆,用于保留枚举值的语义与此枚举值的对象相同。
        重写:
        cloneObject
        结果
        这个实例的克隆。
        另请参见:
        Cloneable
      • toString

        public String toString()
        返回与此枚举值对应的字符串值。
        重写:
        toString在课程 Object
        结果
        对象的字符串表示形式。
      • getStringTable

        protected String[] getStringTable()
        返回此枚举值的枚举类的字符串表。 假设枚举类的整数值位于L .. L + N -1范围内,其中LgetOffset()返回的值, N是字符串表的长度。 索引i - L的字符串表中的元素是toString()为整数值为i的枚举值返回的值。 如果任何枚举值未使用上述范围内的整数,请保留相应的表元素null

        默认实现返回null 如果枚举类(类EnumSyntax的子类)不重写此方法以返回non-null字符串表,并且子类不重写toString()方法,则基类toString()方法将仅返回此枚举值的整数值的字符串表示形式。

        结果
        字符串表
      • getEnumValueTable

        protected EnumSyntax[] getEnumValueTable()
        返回此枚举值的枚举类的枚举值表。 假设枚举类的整数值位于L .. L + N -1范围内,其中LgetOffset()返回的值, N是枚举值表的长度。 索引i - L处的枚举值表中的元素是整数值为i的枚举值对象; readResolve()方法需要在枚举实例的反序列化过程中保留单例语义。 如果任何枚举值未使用上述范围内的整数,请保留相应的表元素null

        默认实现返回null 如果枚举类(类EnumSyntax的子类)不重写此方法以返回non-null枚举值表,并且子类不重写readResolve()方法,则每当从中反序列化枚举实例时,基类readResolve()方法将抛出异常对象输入流。

        结果
        价值表
      • getOffset

        protected int getOffset()
        返回此枚举值的枚举类使用的最小整数值。

        默认实现返回0.如果枚举类(类EnumSyntax的子类)使用从0开始的整数值,则在子类中重写此方法。

        结果
        最低枚举值的偏移量