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



我的教授希望我们制作一个名为MedicalSpecialty的枚举,将GENERAL_MEDICINE,儿科和肿瘤学作为枚举的成员(到目前为止还不错)。

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

我不确定他是什么意思,但随后他说:

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

我不是在寻找解决方案,而是解释他在问什么,如果有人理解的话。getFromString 方法是否意味着接收像"general_medicine"这样的字符串,然后将"GENERAL_MEDICINE"输出为类型MedicalSpecialty?这似乎毫无用处,而且可能是错误的...

任何帮助将不胜感激!

你有正确的想法。可以这样想:

假设您正在设计一个系统,该系统与在全球范围内运行的组件配合使用,并且您使用互联网在它们之间进行通信。欧洲的一个组件希望请求从美国组件转移新的肿瘤学医生。它不能通过网络发送 MedicalSpeciality 枚举,而是发送一个字符串,例如"肿瘤学"。现在,在 US 组件的代码中,您希望将该段文本转换为 US 组件系统理解的内容:枚举。

您需要编写一个方法,该方法采用通过线路发送的输入字符串并返回相应的枚举值。

他的意思是函数的有效输入如下:

"GENERAL_MEDICINE"、"儿科"、"肿瘤科"

您的任务是将字符串类型转换为 Numu 类型。

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

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

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);
    }
}

最新更新