为了在 java 中实现多个枚举的类型可替换性,我可以让它们全部实现一个接口(interface)。但是在 switch-case 中使用接口(interface)对象是具有挑战性的。
- 我无法直接在 switch 语句中使用接口(interface)对象。 switch 语句仅接受 enum、char、byte、short、int 和 string。
- 我可以打开
object.getUniqueID()
,其中getUniqueId
是接口(interface)的成员,但在这种情况下,我将不得不对案例陈述。在我看来,这将是丑陋的并且几乎不可能重构。
我们需要的是一个实现
- 可以用在switch-case语句中,满足上述两个问题。
- 类型可替换。
任何指针都会有帮助。
最佳答案
您应该使用一个包含所有可能的 enum
的枚举值,或者您需要在切换之前检查类型。
MyInterface value = ...
if (value instanceof EnymType1) {
switch((EnumType1) value) {
case ...
}
} else if (value instanceof EnumType2) {
switch((EnumType2) value) {
case ...
}
}
您可以使用 Map<MyInterface, Consumer<MyInterface>>
而不是使用开关。因为它是可动态扩展的,但具有与交换机接近相同的性能。
关于java - 在 Java 中实现类似可扩展枚举的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652203/