- すべての実装されたインタフェース:
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を継承)は、列挙クラスのシングルトン・インスタンスである列挙値のグループ(objects)を提供します。例えば:
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()メソッドは正常に動作します。 ただし、列挙クラスとサブクラスが使用されるアプリケーションは、スーパー・クラスとサブクラスで異なる整数値を持つ必要があります。
- 関連項目:
- 直列化された形式
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protectedEnumSyntax(int value)指定された整数値を持つ新しい列挙値を構築します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 Objectclone()列挙値の複製を返します。これは、列挙値のセマンティックスを保護するために、この列挙値と同じオブジェクトになります。protected EnumSyntax[]getEnumValueTable()この列挙値の列挙クラスの列挙値テーブルを返します。protected intgetOffset()この列挙値の列挙クラスで使用される最小の整数値を返します。protected String[]getStringTable()この列挙値の列挙クラスの文字列テーブルを返します。intgetValue()列挙値の整数値を返します。inthashCode()この列挙値のハッシュ・コード値を返します。protected ObjectreadResolve()オブジェクトの入力時に、この直列化復元された列挙インスタンスを、列挙属性クラスで定義された適切な列挙値に変換します。StringtoString()この列挙値に対応する文字列値を返します。
-
コンストラクタの詳細
-
EnumSyntax
protected EnumSyntax(int value)指定された整数値を持つ新しい列挙値を構築します。- パラメータ:
value- 整数値
-
-
メソッドの詳細
-
getValue
public int getValue()列挙値の整数値を返します。- 戻り値:
- 値
-
clone
public Object clone()列挙値の複製を返します。これは、列挙値のセマンティックスを保護するために、この列挙値と同じオブジェクトになります。 -
hashCode
public int hashCode()この列挙値のハッシュ・コード値を返します。 ハッシュ・コードはこの列挙値の整数値です。- オーバーライド:
hashCode、クラス:Object- 戻り値:
- このオブジェクトのハッシュ・コード値。
- 関連項目:
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
toString
public String toString()この列挙値に対応する文字列値を返します。 -
readResolve
protected Object readResolve() throws ObjectStreamExceptionオブジェクトの入力時に、この直列化復元された列挙インスタンスを、列挙属性クラスで定義された適切な列挙値に変換します。- 戻り値:
getEnumValueTable()によって返された列挙値テーブルのインデックスi - Lに格納された列挙の単独値。ここで、iはこの列挙値の整数値、LはgetOffset()によって返された値- 例外:
ObjectStreamException- ストリームが直列化復元できない場合InvalidObjectException- 列挙値表がnullの場合、この列挙値の整数値は列挙値表の要素に対応しないか、列挙値表の対応する要素はnullです。 (なお、InvalidObjectExceptionは、readResolve()からスローされると宣言されているObjectStreamExceptionのサブクラスです。)
-
getStringTable
protected String[] getStringTable()この列挙値の列挙クラスの文字列テーブルを返します。 列挙クラスの整数値はL..L+N-1の範囲にあるものと見なされます。ここで、LはgetOffset()によって返された値、Nは文字列テーブルの長さです。 インデックスi - Lの文字列テーブルの要素は、整数値がiの列挙値に対するtoString()によって返された値です。 上記の範囲内の整数が列挙値によって使用されない場合は、対応する表要素nullのままにします。デフォルトの実装では
nullを返します。 列挙クラス(クラスEnumSyntaxのサブクラス)がnon-null文字列テーブルを返すためにこのメソッドをオーバーライドせず、サブクラスがtoString()メソッドをオーバーライドしない場合、基本クラスtoString()メソッドはこの列挙値整数値の文字列表現を返します。- 戻り値:
- 文字列テーブル
-
getEnumValueTable
protected EnumSyntax[] getEnumValueTable()この列挙値の列挙クラスの列挙値テーブルを返します。 列挙クラスの整数値はL..L+N-1の範囲にあるものと見なされます。ここで、LはgetOffset()によって返された値、Nは列挙値テーブルの長さです。 インデックスi - Lの列挙値テーブルの要素は、整数値がiの列挙値オブジェクトです。readResolve()メソッドは、列挙インスタンスの直列化復元時に単独のセマンティックスを保護するためにこれが必要になります。 上記の範囲内の整数が列挙値によって使用されない場合は、対応する表要素nullのままにします。デフォルトの実装では
nullを返します。 列挙クラス(クラスEnumSyntaxのサブクラス)がnon-null列挙値表を返すためにこのメソッドをオーバーライドせず、サブクラスがreadResolve()メソッドをオーバーライドしない場合、列挙インスタンスがオブジェクト入力ストリームから直列化復元されるたびに基本クラスreadResolve()メソッドが例外をスローします。- 戻り値:
- 値テーブル
-
getOffset
protected int getOffset()この列挙値の列挙クラスで使用される最小の整数値を返します。デフォルトの実装は0を返します。 列挙クラス(クラス
EnumSyntaxのサブクラス)が0以外で始まる整数値を使用する場合は、このメソッドをサブクラスでオーバーライドします。- 戻り値:
- 最小の列挙値のオフセット
-