我试图将反射应用于此switch语句。我能够找到的所有示例仅适用于字符串。在这种情况下"艺术"是一个对象。
public static EnumArt BukkitToNotch(Art art) {
switch (art) {
case KEBAB: return EnumArt.KEBAB;
case AZTEC: return EnumArt.AZTEC;
case ALBAN: return EnumArt.ALBAN;
case AZTEC2: return EnumArt.AZTEC2;
case BOMB: return EnumArt.BOMB;
case PLANT: return EnumArt.PLANT;
case WASTELAND: return EnumArt.WASTELAND;
case POOL: return EnumArt.POOL;
case COURBET: return EnumArt.COURBET;
case SEA: return EnumArt.SEA;
case SUNSET: return EnumArt.SUNSET;
case CREEBET: return EnumArt.CREEBET;
case WANDERER: return EnumArt.WANDERER;
case GRAHAM: return EnumArt.GRAHAM;
case MATCH: return EnumArt.MATCH;
case BUST: return EnumArt.BUST;
case STAGE: return EnumArt.STAGE;
case VOID: return EnumArt.VOID;
case SKULL_AND_ROSES: return EnumArt.SKULL_AND_ROSES;
case FIGHTERS: return EnumArt.FIGHTERS;
case POINTER: return EnumArt.POINTER;
case PIGSCENE: return EnumArt.PIGSCENE;
case BURNINGSKULL: return EnumArt.BURNINGSKULL;
case SKELETON: return EnumArt.SKELETON;
case DONKEYKONG: return EnumArt.DONKEYKONG;
case WITHER: return EnumArt.WITHER;
default:
throw new AssertionError(art);
}
}
有关如何使用反射执行此操作的任何建议吗?
答案 0 :(得分:0)
假设EnumArt
和Art
都是enums
您不需要反思,只需使用enum
API:
public static EnumArt BukkitToNotch(Art art) {
try {
return EnumArt.valueOf(art.name());
} catch (IllegalArgumentException ignore)
throw new AssertionError(art);
}
}
如果Art不是枚举,请使用任何String属性来匹配名称。
如果两者都不是枚举,则应将它们转换为枚举。