|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectorg.apache.commons.lang.enum.Enum
org.apache.commons.lang.enum.ValuedEnum
タイプセーフな int の値を使用した enum のスーパークラスとなる抽象クラスです。
注: Java クラスローダの処理に依存して結果が変わるため Enum オブジェクトの比較には == ではなく equals() メソッドを使う必要があります。 The equals() メソッドは初めに == を実行するため、たいていの場合は同じ結果になります。
このクラスは継承して使用する必要があります。 例えば:
public final class JavaVersion extends ValuedEnum {
//standard enums for version of JVM
public static final int JAVA1_0_VALUE = 100;
public static final int JAVA1_1_VALUE = 110;
public static final int JAVA1_2_VALUE = 120;
public static final int JAVA1_3_VALUE = 130;
public static final JavaVersionEnum JAVA1_0 = new JavaVersionEnum( "Java 1.0", JAVA1_0_VALUE );
public static final JavaVersionEnum JAVA1_1 = new JavaVersionEnum( "Java 1.1", JAVA1_1_VALUE );
public static final JavaVersionEnum JAVA1_2 = new JavaVersionEnum( "Java 1.2", JAVA1_2_VALUE );
public static final JavaVersionEnum JAVA1_3 = new JavaVersionEnum( "Java 1.3", JAVA1_3_VALUE );
private JavaVersionEnum(String name, int value) {
super( name, value );
}
public static JavaVersionEnum getEnum(String javaVersion) {
return (JavaVersionEnum) getEnum(JavaVersionEnum.class, javaVersion);
}
public static JavaVersionEnum getEnum(int javaVersion) {
return (JavaVersionEnum) getEnum(JavaVersionEnum.class, javaVersion);
}
public static Map getEnumMap() {
return getEnumMap(JavaVersionEnum.class);
}
public static List getEnumList() {
return getEnumList(JavaVersionEnum.class);
}
public static Iterator iterator() {
return iterator(JavaVersionEnum.class);
}
}
The above class could then be used as follows:
public void doSomething(JavaVersion ver) {
switch (ver.getValue()) {
case JAVA1_0_VALUE:
// ...
break;
case JAVA1_1_VALUE:
// ...
break;
//...
}
}
上に見られるように各 enum は名前と値をもっています。
これには getName と getValue を使用することによりアクセスできます。
getEnum と iterator のメソッドの使用をお勧めします。
不幸なことに、Javaの制限のために各サブクラス毎にこのようなコードが必要となってしまいます。
この代案は EnumUtils クラスの使用です
注: このクラスのオリジナルは Jakarta Avalon プロジェクト内にあります。
| 入れ子クラスの概要 |
| クラス org.apache.commons.lang.enum.Enum から継承した入れ子クラス |
|
| フィールドの概要 | |
private int |
iValue
enum の持つ値。 |
| クラス org.apache.commons.lang.enum.Enum から継承したフィールド |
|
| コンストラクタの概要 | |
protected |
ValuedEnum(String name,
int value)
enum アイテムを生成します。 |
| メソッドの概要 | |
int |
compareTo(Object other)
順序をチェックします。 |
protected static Enum |
getEnum(Class enumClass,
int value)
クラスと値から Enum を取得します。 |
int |
getValue()
enum アイテムの値を取得します。 |
String |
toString()
Enum アイテムを読みやすい形で返します。 |
| クラス org.apache.commons.lang.enum.Enum から継承したメソッド |
equals, getEnum, getEnumList, getEnumMap, getName, hashCode, iterator, readResolve |
| クラス java.lang.Object から継承したメソッド |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| フィールドの詳細 |
private final int iValue
| コンストラクタの詳細 |
protected ValuedEnum(String name,
int value)
name - enum アイテムの名称
value - enum アイテムの値
| メソッドの詳細 |
protected static Enum getEnum(Class enumClass,
int value)
enumClass - 取得元となる Enum クラス
value - 取得する Enum の値
IllegalArgumentException - enum クラスが null だった場合
public final int getValue()
public int compareTo(Object other)
Comparable 内の compareToEnum 内の compareToother - 比較対照となるオブジェクト
ClassCastException - 比較対照が Enum でなかった場合
NullPointerException - 比較対照が null だった場合
Comparable.compareTo(Object)public String toString()
Enum 内の toStringtype[name=value] のフォームの文字列、例:
JavaVersion[Java 1.0=100]、 注 型の名前の中のパッケージ名は省略されます。
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||