我正在看一个类似下面的类。我更改了类名和变量名,以避免将实际的公司名称放在这里(抱歉)。
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。为什么会发生这样的事情?
答案 0 :(得分:1)
在现代Java中,你会写:
enum Animal {
Dog, Cat;
}
并使用
Animal.valueOf(name)
从名称中获取枚举值。 (Java 5中添加了枚举类型,已在7年多前发布。)
如果你仍然坚持不支持枚举的Java版本,一种方法是调试org.apache.commons.lang.enums.Enum.getValue
。实施很难成为火箭科学; - )
答案 1 :(得分:0)
我认为您需要扩展ValuedEnum
而不是Enum
(请参阅documentation中的示例)