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 作为参数传递“狗”时,它返回一个动物。但是,当将“Cat”作为参数传递时,它返回 null。为什么会发生这样的事情?

4

2 回答 2

1

在现代 Java 中,你会写:

enum Animal {
    Dog, Cat;
}

并使用

Animal.valueOf(name)

从其名称中获取枚举值。(在 7 年多前发布的 Java 5 中添加了枚举类型。)

如果您仍然停留在不支持枚举的 Java 版本上,一种方法是调试org.apache.commons.lang.enums.Enum.getValue. 实施几乎不会是火箭科学;-)

于 2012-05-17T17:20:42.110 回答
0

我认为您需要扩展ValuedEnum而不是(请参阅文档Enum中的示例)

于 2012-05-17T17:10:49.243 回答