JavaTM Platform
Standard Ed. 6

javax.print.attribute
类 EnumSyntax

java.lang.Object
  继承者 javax.print.attribute.EnumSyntax
所有已实现的接口:
Serializable, Cloneable
直接已知子类:
Chromaticity, ColorSupported, Compression, 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() 方法仍将正常运行,即使子类使用一些与超类相同的整数值。但是,使用枚举类和子类的应用程序在超类和子类中可能需要具有不同的整数值。

另请参见:
序列化表格

构造方法摘要
protected EnumSyntax(int value)
          使用给定的整数值构造一个新枚举值。
 
方法摘要
 Object clone()
          返回此枚举值的一个副本,该副本保留了枚举值的语义,它是与此枚举值相同的对象。
protected  EnumSyntax[] getEnumValueTable()
          返回此枚举值的枚举类的枚举值表。
protected  int getOffset()
          返回此枚举值的枚举类使用的最小整数值。
protected  String[] getStringTable()
          返回此枚举值的枚举类的字符串表。
 int getValue()
          返回此枚举值的整数值。
 int hashCode()
          返回此枚举值的哈希码值。
protected  Object readResolve()
          在对象输入过程中,将此反序列化的枚举实例转换为枚举属性类中定义的适当枚举值。
 String toString()
          返回对应于此枚举值的字符串值。
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

EnumSyntax

protected EnumSyntax(int value)
使用给定的整数值构造一个新枚举值。

参数:
value - 整数值。
方法详细信息

getValue

public int getValue()
返回此枚举值的整数值。

返回:

clone

public Object clone()
返回此枚举值的一个副本,该副本保留了枚举值的语义,它是与此枚举值相同的对象。

覆盖:
Object 中的 clone
返回:
此实例的一个副本。
另请参见:
Cloneable

hashCode

public int hashCode()
返回此枚举值的哈希码值。哈希码正好是此枚举值的整数值。

覆盖:
Object 中的 hashCode
返回:
此对象的一个哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
返回对应于此枚举值的字符串值。

覆盖:
Object 中的 toString
返回:
该对象的字符串表示形式。

readResolve

protected Object readResolve()
                      throws ObjectStreamException
在对象输入过程中,将此反序列化的枚举实例转换为枚举属性类中定义的适当枚举值。

返回:
单个枚举值,它存储在 getEnumValueTable() 返回的枚举值表中的索引 i- L 处,其中 i 是此枚举值的整数值, LgetOffset() 返回的值。
抛出:
ObjectStreamException - 如果无法对流反序列化
InvalidObjectException - 如果枚举值表为 null,此枚举值的整数值与枚举值表中的元素不对应,或枚举值表中的对应元素为 null,则抛出该异常。(注: InvalidObjectExceptionObjectStreamException 的一个子类, ObjectStreamExceptionreadResolve() 声明抛出。

getStringTable

protected String[] getStringTable()
返回此枚举值的枚举类的字符串表。假设枚举类的整数值的范围是 L.. L+ N-1,其中 LgetOffset() 返回的值, N 是字符串表的长度。字符串表中索引 i- L 处的元素是 toString() 针对其整数值是 i 的枚举值所返回的值。如果任何枚举值都不使用上面范围中的整数,则对应的表元素保持为 null。

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

返回:
字符串表

getEnumValueTable

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

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

返回:
值表

getOffset

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

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

返回:
最小枚举值的偏移量。

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策