返回与字符串参数同名的枚举是什么意思?

时间:2014-02-21 00:41:49

标签: java enums tostring enumeration

我的教授希望我们制作一个名为MedicalSpecialty的枚举,将GENERAL_MEDICINE,PEDIATRICS和ONCOLOGY作为枚举的成员(到目前为止一直很好)。

然后他希望我们在MedicalSpecialty枚举中定义一个名为getFromString的方法,该方法接受一个String参数并返回一个与String参数同名的MedicalSpecialty“

我不确定他的意思,但他说:

“提示:使用MedicalSpecialty枚举中的toString()方法执行检查”

我不是在寻找解决方案,而是在解释他的问题,如果有人理解的话。 getFromString方法是否意味着接受像“general_medicine”这样的String,然后输出“GENERAL_MEDICINE”作为MedicalSpecialty类型?这似乎没用,可能是错误的......

任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:4)

你有正确的想法。想一想:

假设您正在设计一个系统,该系统可以使用遍布全球的组件,并使用Internet在它们之间进行通信。欧洲的一个组成部分,希望要求新的肿瘤科医生从美国部分转移。它无法通过网络发送MedicalSpeciality枚举,因此它会发送一个字符串,例如“肿瘤”。现在,在美国组件的代码中,您希望将该文本翻译成您的美国组件系统所理解的内容:枚举。

您需要编写一个方法,该方法接受通过线路发送的输入String并返回相应的Enum值。

答案 1 :(得分:0)

他表示您的函数的有效输入如下:

“GENERAL_MEDICINE”,“PEDIATRICS”,“ONCOLOGY”

您的任务是将String类型转换为Enum类型。

答案 2 :(得分:0)

他可能希望您表明您知道如何遍历枚举的所有元素,并将每个toString结果与传入的字符串进行比较。

你是对的,这不是最好的方法。

答案 3 :(得分:0)

public enum Medicine {

    GENERAL_MEDICINE("general_medicine"), 
    PEDIATRICS("pediatrics");

    private final String value;

    Medicine(String v) {

        value = v;
    }

    public String value() {
        return value;
    }

    public static Medicine fromString(String v) {
        for (Medicine c : Medicine.values()) {
            if (c.value.equals(v)) {
                return c;
            }
        }
        throw new IllegalArgumentException(v);
    }
}