我有一个枚举类,其值为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。这样的事情。有人可以帮助我吗?
答案 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。