设置枚举值

时间:2015-03-09 23:47:04

标签: java

我有一个枚举类,其值为A,B。这是班级 -

@XmlType(name = "MemberType")
@XmlEnum
public enum MemberType {
    A,
    B;
    public String value() {
        return name();
    }

    public static MemberType fromValue(String v) {
        return valueOf(v);
    }
}

我有另一个类似于这个具有相同值A和B的枚举类。这个类是从我的WSDL生成的,我无法控制它的代码。我基本上想要做的是,将两个枚举值等同起来。 基本上说是MemberType.A = WSDLClass.A。这样的事情。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

虽然您无法将一个枚举类型分配给其他类型(和you can't have enum extend some abstract superclass),但您可以声明一个静态方法(在MemberType或某个实用程序类中),从{{1}映射} WSDLClass

MemberType

然后你将使用该功能如下:

public static MemberType fromWsdl(WSDLClass w) {
    if (w==null) {
      return null;
    } else {
      switch (w) {
         case WSDLClass.A: return MemberType.A;
         case WSDLClass.B: return MemberType.B;
         default: return null;
      }
    }
}

答案 1 :(得分:1)

如果名字严格相同,我想你可以:

private MemberType convertEnum(WSDLClass type) {
    return Enum.valueOf(MemberType.class, type.name());
}

如果名称不完全相同或将来可能会有所不同,您将不得不这样做:

private MemberType convertEnum(WSDLClass type) {
    MemberType memberType;
    switch (type) {
    case A:
        memberType = MemberType.A;
        break;
    case B:
        memberType = MemberType.B;
        break;
    default:
        memberType = null;
        break;
    }
    return memberType;
}

如果你想使用第一个解决方案但是如果type为null则抛出NullPointerException,你可以使用Apache Commons Lang的EnumUtils

相关问题