org.apache.commons.lang.enum
クラス ValuedEnum

java.lang.Object
  拡張org.apache.commons.lang.enum.Enum
      拡張org.apache.commons.lang.enum.ValuedEnum
すべての実装インタフェース:
Comparable, Serializable

public abstract class ValuedEnum
extends Enum

タイプセーフな 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 は名前と値をもっています。 これには getNamegetValue を使用することによりアクセスできます。

getEnumiterator のメソッドの使用をお勧めします。 不幸なことに、Javaの制限のために各サブクラス毎にこのようなコードが必要となってしまいます。 この代案は EnumUtils クラスの使用です

注: このクラスのオリジナルは Jakarta Avalon プロジェクト内にあります。

バージョン:
$Id: ValuedEnum.java,v 1.1.1.1 2004/02/13 10:02:04 hioki Exp $
作成者:
Stephen Colebourne
関連項目:
直列化された形式
翻訳者:
日置 聡

入れ子クラスの概要
 
クラス 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
 

フィールドの詳細

iValue

private final int iValue
enum の持つ値。

コンストラクタの詳細

ValuedEnum

protected ValuedEnum(String name,
                     int value)
enum アイテムを生成します。

パラメータ:
name - enum アイテムの名称
value - enum アイテムの値
メソッドの詳細

getEnum

protected static Enum getEnum(Class enumClass,
                              int value)
クラスと値から Enum を取得します。 このメソッドは Enum のリストをループして走査するため、多くの Enum が登録されている場合、その処理は遅くなります。

パラメータ:
enumClass - 取得元となる Enum クラス
value - 取得する Enum の値
戻り値:
enum オブジェクト、該当する enum 画存在しない場合 null
例外:
IllegalArgumentException - enum クラスが null だった場合

getValue

public final int getValue()
enum アイテムの値を取得します。

戻り値:
enum アイテムの値

compareTo

public int compareTo(Object other)
順序をチェックします。 デフォルトの順番は値のの数値順となりますが、これはサブクラスによってオーバライドされます。

定義:
インタフェース Comparable 内の compareTo
オーバーライド:
クラス Enum 内の compareTo
パラメータ:
other - 比較対照となるオブジェクト
戻り値:
比較対照より小さかった場合 -ve(マイナス)、比較対照より大きかった場合 +ve(プラス)、等しかった場合 0
例外:
ClassCastException - 比較対照が Enum でなかった場合
NullPointerException - 比較対照が null だった場合
関連項目:
Comparable.compareTo(Object)

toString

public String toString()
Enum アイテムを読みやすい形で返します。 デバッグの際に使用されます。

オーバーライド:
クラス Enum 内の toString
戻り値:
type[name=value] のフォームの文字列、例: JavaVersion[Java 1.0=100]、 注 型の名前の中のパッケージ名は省略されます。


このドキュメントは、Ja-Jakartaにより訳されました。 コメントがある場合は report@jajakarta.orgまでお願いします。
Translated into Japanese by jajakarta.org. The original page is here.
Copyright (c) 2002-2003 - Apache Software Foundation