要在java中的多个枚举中获得类型可替代性,我可以让它们都实现一个接口。但是在交换机外壳中使用接口的对象具有挑战性。
object.getUniqueID()
,其中getUniqueId
是接口的成员,但在这种情况下,我将不得不对case语句的值进行硬编码。哪个国际海事组织,将是丑陋的,几乎不可能重构。 需要的是一个实现
的东西任何指针都会有所帮助。
答案 0 :(得分:2)
您应该使用具有所有可能enum
值的单个枚举,或者在切换之前需要检查类型。
MyInterface value = ...
if (value instanceof EnymType1) {
switch((EnumType1) value) {
case ...
}
} else if (value instanceof EnumType2) {
switch((EnumType2) value) {
case ...
}
}
您可以使用Map<MyInterface, Consumer<MyInterface>>
代替使用交换机,因为它可以动态扩展,但接近交换机的性能。