-1
我对这里发生的事情感到困惑。这是一件简单的事情,但由于某种原因,我得到的是枚举的名称而不是价值。枚举值不能返回值
这里是我的类:
public class Class1{
public enum SchoolEnum {
01("MIDDLE_SCHOOL");
private String value;
SchoolEnum(String value) {
this.value = value;
}
@Override
public String toString() {
return String.valueOf(value);
}
}
private SchoolEnum schoolEnum = null;
public SchoolEnum getSchoolEnum() {
return schoolEnum;
}
public void setSchoolEnum (SchoolEnum schoolEnum) {
this.schoolEnum= schoolEnum;
}
}
在另一个类调用它通过这样的:
Class1 response = new Class1();
response.setSchoolEnum(Class1.SchoolEnum.valueOf("01"));
每当我试图让01枚举的价值,我只得到01代替值MIDDLE_SCHOOL。这里发生了什么 ?
我不确定我是否理解这个问题。 'SchoolEnum.valueOf'将返回一个'SchoolEnum',而不是一个String。如果您想要指向的字符串,请使用'schoolEnum.value'。当你想要字符串时,它在哪里得到枚举? – yshavit
(我暂时忽略了“01”不是一个有效的枚举值名称,所以上面的代码实际上不会编译......) – yshavit
我并不是无视这一点。发布的代码不会被编译。 '01'(零一)是一个非法的变量名称。 OP意味着枚举常量没有任何意义。常数_is_的值。你可以定义一个像你试图用你的非法常量做的属性并将它命名为value,这就是枚举值的“value”_attribute_。关于您应该学习的枚举,有一部分Java教程,关于变量命名的文档也会对您有所帮助。 –