JavaTM 2 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 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only