我想知道是否可以使用方法(直接)将ENUM1转换为ENUM2:
public enum BusinessUnit {
ONE( "ONE" ),
TWO( "TWO" ),
}
public enum BUSINESS_UNIT {
ONE,
TWO,
}
然后:
BusinessUnit bu = BusinessUnit.valueOf("ONE");
BUSINESS_UNIT bu2 = bu;
有可能吗?
更新:
我不想创建任何转换方法,我想知道是否:
再次感谢...
答案 0 :(得分:2)
或者,只需使用实例
public enum BusinessUnit {
ONE( BUSINESS_UNIT.ONE ),
TWO( BUSINESS_UNIT.TWO );
private final BUSINESS_UNIT unit;
BusinessUnit(BUSINESS_UNIT unit) {
this.unit = unit;
}
public BUSINESS_UNIT getUnit()
{
return unit;
}
}
public enum BUSINESS_UNIT {
ONE,
TWO,
}
并获取它:BusinessUnit.(ONE/TWO).getUnit()
将返回BUSINESS_UNIT ONE/TWO
我不想创建任何转换方法,
我想知道是否:
可能
可能的SDK版本
没有。 BusinessUnit
是enum
,BUSINESS_UNIT
是另一个enum
。它们没有任何共同点,你不能在不使用方法的情况下从一个传递到另一个。
答案 1 :(得分:0)
您好,您可以通过以下方式执行此操作
static BUSINESS_UNIT BUSINESS_UNITTOBusinessUnit(BusinessUnit value) {
return BUSINESS_UNIT.values()[value.ordinal()];
}
答案 2 :(得分:0)
您可以使用接口执行类似的操作:
public interface BusinessUnitName {
public String name();
}
public enum BusinessUnit implements BusinessUnitName {
ONE,
TWO,
}
public enum BUSINESS_UNIT implements BusinessUnitName {
ONE,
TWO,
}
....
BusinessUnitName bu = BusinessUnit.valueOf("ONE");
BusinessUnitName bu2 = bu;
System.out.println(bu2.name());
接口声明代表业务单位的对象所需的最低限度。这两个枚举类实现了该接口(枚举已经实现了一个名为name()
的函数)。与业务部门有关的代码应该坚持使用BusinessUnitName
接口。它不应该过于密切关注BusinessUnitName
个对象,看看它们是如何实际实现的。
答案 3 :(得分:0)
您必须调用方法,但您既不必定义新方法,也不必定义 interfaces 。如果我理解正确,您希望通过匹配名称从一个枚举类型转换为另一个:
public class ConversionTest {
enum BusinessUnit {
ONE, TWO
}
enum BUSINESS_UNIT {
ONE, TWO
}
@Test public void convert_BUSINESS_UNIT_to_BusinessUnit() {
assertEquals(BusinessUnit.ONE, BusinessUnit.valueOf(BUSINESS_UNIT.ONE.name()));
}
@Test public void convert_BusinessUnit_to_BUSINESS_UNIT() {
assertEquals(BUSINESS_UNIT.ONE, BUSINESS_UNIT.valueOf(BusinessUnit.ONE.name()));
}
}