如何使用相同的键将枚举映射到枚举

tre*_*ekt 4 java mapping enums

如何在 Java 中使用相同的键将枚举映射到枚举。例如..

public enum FirstEnum {
 A, B
} 

public enum ScndEnum {
 A, B, C
} 
Run Code Online (Sandbox Code Playgroud)

我找不到好的解决方案

ern*_*t_k 6

您无法直接从一种枚举类型映射到另一种枚举类型,但可以使用 的值name()并使用 进行映射valueOf()。这两种方法都带有所有枚举类:

ScndEnum aToA = ScndEnum.valueOf(FirstEnum.A.name());
Run Code Online (Sandbox Code Playgroud)

如果你想让它通用:

private static <E extends Enum<E>, F extends Enum<F>> 
    F mapEnum(E enum1, Class<F> enum2Class) {

    return Enum.valueOf(enum2Class, enum1.name());
}
Run Code Online (Sandbox Code Playgroud)

你可以使用类似的东西来调用

ScndEnum b = mapEnum(FirstEnum.B, ScndEnum.class)
Run Code Online (Sandbox Code Playgroud)