我有一个枚举类,它的值是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,类似的东西。接下来我能试试什么?
发布于 2015-03-10 00:06:53
虽然不能将一个枚举类型分配给另一个类型(和你不能让枚举扩展一些抽象的超类),但是可以声明一个静态方法(无论是在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))) ...发布于 2015-03-10 00:07:21
如果名称严格相同,我想您可以:
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;
}如果您想使用第一种解决方案,但是如果类型为null,它会抛出NullPointerException,那么可以使用Apache中的EnumUtils。
https://stackoverflow.com/questions/28953790
复制相似问题