之前面试过程中面试官问java枚举类中是否可以有set方法?对于指点我当时不是很确定,就回答了可以,之后面试官告诉说是不可以,不能对值去进行改变。
今天偶然看了一篇关于枚举的文章,其中有一个代码是给了set方法的,而且试了一下set方法可以正常用,值也确实被修修改了。
现在我就很疑惑了,到底可不可以有set方法?
下面是枚举类代码:
public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量 private String name; private int index; // 构造方法 private Color(String name, int index) { this.name = name; this.index = index; } // 普通方法 public static String getName(int index) { for (Color c : Color.values()) { if (c.getIndex() == index) { return c.name; } } return null; } // get set 方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; }}
下面是set方法调用的代码:
Color.RED.setName("hongse");
System.out.println(Color.RED.getName());
下面是输出结果:
hongse
4 回答

ibeautiful
TA贡献1993条经验 获得超6个赞
可以的,枚举的实质就是在class中new 了几个静态的实例,枚举可以实现接口,也可以有自己的方法。看代码吧!
1 //你可以把SUCCESS,ERROR,WARN当做是Result的三个实例,有且只有这三个(ps:如果只有一个SUCCESS是不是就是单例模式?扯远了) 2 //那么既然是实例,就可以有对应的成员变量:status和message,那为什么就不能有getter和setter呢? 3 public enum Result { 4 SUCCESS("1", "操作成功"), 5 REEOR("0", "操作失败"), 6 WARN("2", "警告"); 7 8 private String status; 9 private String message; 10 11 Result(String status, String message) { 12 this.status = status; 13 this.message = message; 14 } 15 16 public String getStatus() { 17 return status; 18 } 19 20 public void setStatus(String status) { 21 this.status = status; 22 } 23 24 public String getMessage() { 25 return message; 26 } 27 28 public void setMessage(String message) { 29 this.message = message; 30 } 31 }
添加回答
举报
0/150
提交
取消