点滴记录,是前进的脚步
2018-02-11 01:56
采纳率: 33%
浏览 2.2k
已采纳

小白问题,枚举类型返回一个常量问题java

需要给一个系统返回枚举类型(不可变)。
该枚举类型有三个枚举常量:PENDING("PENDING", "待确认"),
SUCCESS("SUCCESS", "确认成功"),
CANCELED("CANCELED", "取消");
但只能返回三个常量的其中一个状态,可是另外两个也有值怎么办呀?(直接返回的话对方系统会得到三个状态)
常量创建时有一个构造函数给常量赋过key,value属性值了导致所有常量的key,value属性都有值:
属性:
private String key;
private String value;
构造函数:
private OrderStatus(String key, String value) {
this.key = key;
this.value = value;
}

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • handty 2018-02-11 02:11
    已采纳

    不是很明白问题,直接返回满足条件的枚举常量比如Enum.PENDING,然后系统根据返回的枚举值处理就可以

    已采纳该答案
    打赏 评论
  • 偷心的艺术 2018-02-11 02:29

    个人觉得自觉返回枚举值处理

    打赏 评论
  • wuxiaohao800 2018-02-11 02:43

    不懂为什么要全部返回?不能返回单个值?个么难道你还想先取整个Enum?又要让接收方只收取一个?个么难道要先清另外两个?那还不如直接返回Enum.PENDING

    打赏 评论
  • 快乐老鸟 2018-02-11 02:44

    是不是想要的是Enum.values()

    打赏 评论
  • 伏月又九 2018-02-11 02:57

    /**
    * 状态枚举
    */
    public enum Statu {

        /**
         * 待确认
         */
        PENDING,
    
        /**
         * 确认成功
         */
        SUCCESS,
    
        /**
         * 取消
         */
        CANCELED;
    
        private static Map<String, Statu> map = new HashMap<>();
    
        static {
            map.put("待确认", PENDING);
            map.put("确认成功", SUCCESS);
            map.put("取消", CANCELED);
        }
    
        public static Statu forValue(String value) {
            return map.get(value);
        }
    
        @JsonValue
        public String toValue() {
            for (Map.Entry<String,Statu> entry : map.entrySet()) {
                if (entry.getValue() == this) {
                    return entry.getKey();
                }
            }
            return "";
        }
    }
    
        你这样回去到status的值肯定只有一个
    
    打赏 评论
  • ACTerminate 2018-02-11 09:28

    枚举类型不是用于返回Enum.PENDING等等枚举值的吗,为什么要返回枚举类型的这个类

    打赏 评论

相关推荐 更多相似问题