为了账号安全,请及时绑定邮箱和手机立即绑定

java枚举中是否可以有set方法修改值

java枚举中是否可以有set方法修改值

ITMISS 2018-12-06 22:56:31
之前面试过程中面试官问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 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

即使能也不会这样去做,枚举一般都是常量,你这样set还不乱了套。

查看完整回答
反对 回复 2018-12-16
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

我实际项目中也没看到有人用set的

查看完整回答
反对 回复 2018-12-16
?
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 }
查看完整回答
反对 回复 2018-12-16
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

随意百度被

查看完整回答
反对 回复 2018-12-16
  • 4 回答
  • 0 关注
  • 4972 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号