我知道这与枚举的 idea 背道而驰,但是在C#/Java中可以扩展枚举吗?我的意思是"扩展",既指向枚举添加新值,也指从现有枚举继承的面向对象意义上的"扩展".
我认为这在Java中是不可能的,因为它只是最近才得到它们(Java5?).不过,C#似乎更宽容那些想做疯狂事情的人,所以我认为这可能是某种方式.想必它可以通过反射被破解(并不是说你真的会使用这种方法)?
我不一定对实现任何给定的方法感兴趣,它只是在我想到它时激起了我的好奇心:-)
我知道这与枚举的 idea 背道而驰,但是在C#/Java中可以扩展枚举吗?我的意思是"扩展",既指向枚举添加新值,也指从现有枚举继承的面向对象意义上的"扩展".
我认为这在Java中是不可能的,因为它只是最近才得到它们(Java5?).不过,C#似乎更宽容那些想做疯狂事情的人,所以我认为这可能是某种方式.想必它可以通过反射被破解(并不是说你真的会使用这种方法)?
我不一定对实现任何给定的方法感兴趣,它只是在我想到它时激起了我的好奇心:-)
不能扩展枚举的原因是它会导致多态性问题.
假设您有一个值为A、B和C的枚举MyEnum,并使用值D将其扩展为MyExtEnum.
假设一个方法在某个地方需要一个myEnum值,例如作为参数.提供MyExtNum值应该是合法的,因为它是一个子类型,但是现在当发现值是D时,您将怎么做?
为了消除这个问题,扩展枚举是非法的