Module java.desktop

Class EnumSyntax

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 ("史上最伟大的作曲家!");
     }
 
枚举类的equals()方法只是对相同对象(==)进行测试。

您可以通过调用toString()将枚举值转换为字符串。该字符串是从枚举类提供的表中获取的。

在幕后,枚举值只是一个整数,对于枚举类中的每个枚举值,都有一个不同的整数。您可以通过调用getValue()来获取枚举值的整数值。枚举值的整数值在构造时确定(参见EnumSyntax(int))。由于构造函数是受保护的,因此在枚举类中声明的唯一可能的枚举值是在枚举类中声明的单例对象;不能在运行时创建额外的枚举值。

您可以定义一个枚举类的子类,通过附加枚举值来扩展它。子类的枚举值的整数值不需要与超类的枚举值的整数值不同;即使子类使用与超类相同的一些整数值,==!=equals()toString()方法仍将正常工作。但是,使用枚举类和子类的应用程序可能需要在超类和子类中具有不同的整数值。

参见:
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    EnumSyntax(int value)
    使用给定的整数值构造一个新的枚举值。
  • Method Summary

    Modifier and Type
    Method
    Description
    clone()
    返回此枚举值的克隆,为了保留枚举值的语义,它与此枚举值相同。
    protected EnumSyntax[]
    返回此枚举值的枚举值表,用于此枚举值的枚举类。
    protected int
    返回此枚举值的枚举类使用的最低整数值。
    protected String[]
    返回此枚举值的枚举类的字符串表。
    int
    返回此枚举值的整数值。
    int
    返回此枚举值的哈希码值。
    protected Object
    在对象输入期间,将此反序列化的枚举实例转换为枚举属性类中定义的适当枚举值。
    返回与此枚举值对应的字符串值。

    Methods declared in class java.lang.Object

    equals, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • EnumSyntax

      protected EnumSyntax(int value)
      使用给定的整数值构造一个新的枚举值。
      参数:
      value - 整数值
  • Method Details

    • getValue

      public int getValue()
      返回此枚举值的整数值。
      返回:
      该值
    • clone

      public Object clone()
      返回此枚举值的克隆,为了保留枚举值的语义,它与此枚举值相同。
      覆盖:
      clone 在类 Object
      返回:
      此实例的克隆。
      参见:
    • hashCode

      public int hashCode()
      返回此枚举值的哈希码值。哈希码只是此枚举值的整数值。
      覆盖:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见:
    • toString

      public String toString()
      返回与此枚举值对应的字符串值。
      覆盖:
      toString 在类 Object
      返回:
      对象的字符串表示。
    • readResolve

      protected Object readResolve() throws ObjectStreamException
      在对象输入期间,将此反序列化的枚举实例转换为枚举属性类中定义的适当枚举值。
      返回:
      存储在由getEnumValueTable()返回的枚举值表中索引i-L处的枚举单例值,其中i是此枚举值的整数值,L是由getOffset()返回的值
      抛出:
      ObjectStreamException - 如果流无法反序列化
      InvalidObjectException - 如果枚举值表为null,此枚举值的整数值不对应于枚举值表中的元素,或枚举值表中的相应元素为null。(注意:InvalidObjectExceptionObjectStreamException的子类,readResolve()声明为抛出。)
    • getStringTable

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

      默认实现返回 null。如果枚举类(EnumSyntax 类的子类)未覆盖此方法以返回 非null 字符串表,并且子类未覆盖 toString() 方法,则基类 toString() 方法将仅返回此枚举值的整数值的字符串表示。

      返回:
      字符串表
    • getEnumValueTable

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

      默认实现返回 null。如果枚举类(EnumSyntax 类的子类)未覆盖此方法以返回 非null 枚举值表,并且子类未覆盖 readResolve() 方法,则基类 readResolve() 方法将在从对象输入流反序列化枚举实例时抛出异常。

      返回:
      值表
    • getOffset

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

      默认实现返回 0。如果枚举类(EnumSyntax 类的子类)使用非0起始的整数值,请在子类中覆盖此方法。

      返回:
      最低枚举值的偏移量