我有一个枚举类,其值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。这样的东西。有人可以帮帮我吗?

最佳答案

虽然无法将一种枚举类型分配给另一种类型(和you can't have enum extend some abstract superclass),但是可以声明一个静态方法(在MemberType或某些实用程序类中),该方法从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;
      }
    }
}


然后您将使用该函数,如下所示:

import static xyz.MemberType.fromWsdl;
...
MemberType m = ...;
WSDLClass w = ...;
if (m.equals(fromWsdl(w))) ...

09-25 22:02