public abstract class EnumSyntax extends Object implements Serializable, Cloneable
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()
この列挙値に対応する文字列値を返します。
|
public int getValue()
public Object clone()
public int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public String toString()
protected Object readResolve() throws ObjectStreamException
getEnumValueTable()
によって返された列挙値テーブルのインデックス i - L に格納された列挙の単独値。ここで、i はこの列挙値の整数値、L は getOffset()
によって返された値。ObjectStreamException
- ストリームが直列化復元できない場合InvalidObjectException
- 列挙値のテーブルが null の場合、この列挙値の整数値が列挙値のテーブルの要素に対応しない場合、または列挙値のテーブルの対応する要素が null の場合、スローされる。なお、InvalidObjectException
は、readResolve()
からスローされると宣言されている ObjectStreamException
のサブクラスです。)protected String[] getStringTable()
getOffset()
によって返された値、N は文字列テーブルの長さです。インデックス i - L の文字列テーブルの要素は、整数値が i の列挙値に対する toString()
によって返された値です。上述の範囲の整数値がどの列挙値でも使用されない場合、対応するテーブル要素は null のままになります。
デフォルト実装は null を返します。列挙クラス (EnumSyntax クラスのサブクラス) が null 以外の文字列テーブルを返すためにこのメソッドをオーバーライドしない場合に、このサブクラスが
メソッドをオーバーライドしないと、基底クラス toString()
メソッドによってこの列挙値の整数値の文字列表現が返されます。toString()
protected EnumSyntax[] getEnumValueTable()
getOffset()
によって返された値、N は列挙値テーブルの長さです。インデックス i - L の列挙値テーブルの要素は、整数値が i の列挙値オブジェクトです。readResolve()
メソッドは、列挙インスタンスの直列化復元時に単独のセマンティクスを保護するためにこれが必要になります。上述の範囲の整数値がどの列挙値でも使用されない場合、対応するテーブル要素は null のままになります。
デフォルト実装は null を返します。列挙クラス (EnumSyntax クラスのサブクラス) が null 以外の列挙値テーブルを返すためにこのメソッドをオーバーライドしない場合に、このサブクラスが
メソッドをオーバーライドしないと、基底クラス readResolve()
メソッドによって、列挙インスタンスがオブジェクト入力ストリームから直列化復元されるときに必ず例外がスローされます。readResolve()
protected int getOffset()
デフォルトの実装は 0 を返します。列挙クラス (EnumSyntax クラスのサブクラス) が 0 以外で始まる整数値を使用する場合、サブクラスのこのメソッドをオーバーライドします。
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.