我的教授希望我们制作一个名为MedicalSpecialty的枚举,将GENERAL_MEDICINE,PEDIATRICS和ONCOLOGY作为枚举的成员(到目前为止一直很好)。
然后他希望我们在MedicalSpecialty枚举中定义一个名为getFromString的方法,该方法接受一个String参数并返回一个与String参数同名的MedicalSpecialty“
我不确定他的意思,但他说:
“提示:使用MedicalSpecialty枚举中的toString()方法执行检查”
我不是在寻找解决方案,而是在解释他的问题,如果有人理解的话。 getFromString方法是否意味着接受像“general_medicine”这样的String,然后输出“GENERAL_MEDICINE”作为MedicalSpecialty类型?这似乎没用,可能是错误的......
任何帮助将不胜感激!
答案 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);
}
}