Module  java.desktop
软件包  javax.print.attribute

Class EnumSyntax

  • All Implemented Interfaces:
    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​()
        返回与此枚举值对应的字符串值。
        重写:
        toStringObject
        结果
        对象的字符串表示形式。
      • 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以外的整数值,请在子类中覆盖此方法。

        结果
        最低枚举值的偏移量。