|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectorg.apache.commons.lang.enum.Enum
タイプセーフな enum のスーパークラスとなる抽象クラスです。
C言語にあって Java に欠けている機能の一つが列挙型です。 int をベースにした C の実装は不十分で誤用を招きます。 オリジナルの Java の勧告とほとんどのJDKは int を不変の値として使用します。 しかしより強固でタイプセーフなクラスをベースにされた解決策がデザインされています。 このクラスは基本的なタイプセーフな列挙型のパターンを提供します。
注: Java クラスローダの処理に依存して結果が変わるため Enum オブジェクトの比較には == ではなく equals() メソッドを使う必要があります。 The equals() メソッドは初めに == を実行するため、たいていの場合は同じ結果になります。
このクラスは継承して使用する必要があります。 例えば:
public final class ColorEnum extends Enum {
public static final ColorEnum RED = new ColorEnum("Red");
public static final ColorEnum GREEN = new ColorEnum("Green");
public static final ColorEnum BLUE = new ColorEnum("Blue");
private ColorEnum(String color) {
super(color);
}
public static ColorEnum getEnum(String color) {
return (ColorEnum) getEnum(ColorEnum.class, color);
}
public static Map getEnumMap() {
return getEnumMap(ColorEnum.class);
}
public static List getEnumList() {
return getEnumList(ColorEnum.class);
}
public static Iterator iterator() {
return iterator(ColorEnum.class);
}
}
上に見られるように各 enum は名前をもっています。 これには getName を使用することによりアクセスできます。
getEnum と iterator のメソッドの使用をお勧めします。
不幸なことに、Javaの制限のために各サブクラス毎にこのようなコードが必要となってしまいます。
この代案は EnumUtils クラスの使用です。
注: このクラスのオリジナルは Jakarta Avalon プロジェクト内にあります。
| 入れ子クラスの概要 | |
private static class |
Enum.Entry
ソースコードの順序を保持してイテレータを使用可能とします。 |
| フィールドの概要 | |
private static Map |
cEnumClasses
キーがクラス名、値がエントリーの Map。 |
private static Map |
EMPTY_MAP
空のマップ(JDK1.2 は空のマップを持っていないので)。 |
private String |
iName
Enum を表現する名称。 |
| コンストラクタの概要 | |
protected |
Enum(String name)
列挙型に追加する新しい名称のアイテムを生成します。 |
| メソッドの概要 | |
int |
compareTo(Object other)
順序をチェックします。 |
boolean |
equals(Object other)
等しいかどうかのチェックを行います。 |
protected static Enum |
getEnum(Class enumClass,
String name)
クラスと名称から Enum を取得します。 |
protected static List |
getEnumList(Class enumClass)
Enum クラスを使用して Enum オブジェクトのリストを取得します。 |
protected static Map |
getEnumMap(Class enumClass)
Enum クラスの名称から Enum オブジェクトの Map を取得します。 |
String |
getName()
コンストラクタで設定された Enum アイテムの名称を取得します。 |
int |
hashCode()
適切な列挙型のハッシュコードを返します。 |
protected static Iterator |
iterator(Class enumClass)
Enum クラス内の Enum オブジェクトを走査するイテレータを取得します。. |
protected Object |
readResolve()
複数のコピーが無駄に生成される、または不正な enum 型が生成される事のないようにクラスの直列化復元を処理します。 |
String |
toString()
Enum アイテムを読みやすい形で返します。 |
| クラス java.lang.Object から継承したメソッド |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| フィールドの詳細 |
private static final Map EMPTY_MAP
private static final Map cEnumClasses
private final String iName
| コンストラクタの詳細 |
protected Enum(String name)
name - enum オブジェクトの名称
IllegalArgumentException - 名称が null または空の文字列だった場合
| メソッドの詳細 |
protected Object readResolve()
protected static Enum getEnum(Class enumClass,
String name)
enumClass - 取得元となる Enum クラス
name - Enum の名称、または null
IllegalArgumentException - enum クラスが null だった場合
protected static Map getEnumMap(Class enumClass)
enumClass - 取得元となる Enum クラス
IllegalArgumentException - enum クラスが null だった場合
IllegalArgumentException - enum クラスが Enum のサブクラスでなかった場合
protected static List getEnumList(Class enumClass)
enumClass - 取得元となる Enum クラス
IllegalArgumentException - enum クラスが null だった場合
IllegalArgumentException - enum クラスが Enum のサブクラスでなかった場合
protected static Iterator iterator(Class enumClass)
enumClass - 取得元となる Enum クラス
IllegalArgumentException - enum クラスが null だった場合
IllegalArgumentException - enum クラスが Enum のサブクラスでなかった場合
public final String getName()
public final boolean equals(Object other)
other - 等しいかどうかの比較対照となるオブジェクト
public final int hashCode()
public int compareTo(Object other)
Comparable 内の compareToother - 比較対照となるオブジェクト
ClassCastException - 比較対照が Enum でなかった場合
NullPointerException - 比較対照が null だった場合
Comparable.compareTo(Object)public String toString()
type[name] のフォームの文字列、例:
Color[Red]、 注 型の名前の中のパッケージ名は省略されます。
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||