0

以下のようなクラスを見ています。ここに実際の会社名を入れないように、クラス名と変数名を変更しました (申し訳ありません)。

import org.apache.commons.lang.enums.Enum;

public class Animal extends Enum {

    public static final Animal DOG = new Animal("Dog");
    public static final Animal CAT = new Animal("Cat");

    private Animal(String name) {
        super(name);
    }

    public static Animal getAnimal(String code) {
        return (Animal) getEnum(Animal.class, code);
    }
}

getAnimal がパラメーターとして "Dog" を渡されると、Animal が返されます。ただし、「Cat」をパラメーターとして渡すと、null が返されます。なぜこのようなことが起こるのでしょうか?

4

2 に答える 2

1

現代の Java では、次のように記述します。

enum Animal {
    Dog, Cat;
}

と使用

Animal.valueOf(name)

その名前から列挙値を取得します。(列挙型は、7 年以上前にリリースされた Java 5 で追加されました。)

列挙型をサポートしていない Java バージョンにまだ行き詰まっている場合、1 つのアプローチは debugorg.apache.commons.lang.enums.Enum.getValueです。実装はロケット科学になることはほとんどありません;-)

于 2012-05-17T17:20:42.110 に答える
0

ValuedEnum代わりに拡張する必要があると思います(ドキュメントEnumの例を参照してください)

于 2012-05-17T17:10:49.243 に答える