小白问题,枚举类型返回一个常量问题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个回答

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

u010287873
点滴记录,是前进的脚步 明白了,谢谢
2 年多之前 回复
handty
handty 回复u010287873: 一般java返回的都是对象,对于枚举来说,要不然就是Enum.PENDING这种Enum对象,要不然就是Enum.class这个class对象,对方要求Enum的话是不是没有沟通清楚
2 年多之前 回复
handty
handty 回复u010287873: Enum.PENDING就是enum啊,还是说对方要接受的是Enum.class
2 年多之前 回复
airfling
airfling 回复u010287873: Enum.PENDING不就是枚举吗
2 年多之前 回复
u010287873
点滴记录,是前进的脚步 对方要求返回的是Enum,不是Enum里的某个枚举常量比如Enum.PENDING
2 年多之前 回复

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

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

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

/**
* 状态枚举
*/
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的值肯定只有一个

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

ACTerminate
ACTerminate 回复u010287873: 哦哦没事儿
2 年多之前 回复
u010287873
点滴记录,是前进的脚步 不好意思原来不懂
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐