|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
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 を使用することによりアクセスできます。
getName.
getEnum と iterator のメソッドの使用をお勧めします。
不幸なことに、Javaの制限のために各サブクラス毎にこのようなコードが必要となってしまいます。
この代案は EnumUtils クラスの使用です。
getEnum and iterator methods are recommended.
Unfortunately, Java restrictions require these to be coded as shown in each subclass.
An alternative choice is to use the {@link EnumUtils} class.注: このクラスのオリジナルは 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()
String name of this Enum itempublic 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]、 注 型の名前の中のパッケージ名は省略されます。
type[name], for example:
Color[Red]. Note that the package name is stripped from
the type name.
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||