我认为 他们这样做 的答案来自以下问题:
在您的示例中,如何实例化MyClass?用户永远不会(通过new MyEnum()
)显式实例化枚举。您必须执行类似的操作,MyClass.ASD
但不确定如何运行。
基本上,我不知道您建议的添加内容将使用哪种语法。这可能就是为什么他们使他们进入决赛等…
编辑已添加
如果原始Enum的作者提前计划了(不太可能),并且您不担心线程安全过高,则可以执行以下操作:(顺便说一句,我可能会对任何在生产代码YMMV中实际执行过此操作的人大叫)
public enum ExtendibleEnum {
FOO, BAR, ZXC;
private Runnable anotherMethodRunme; // exact Interface will vary, I picked an easy one
// this is what gets "injected" by your other class
public void setAnotherMethodRunMe(Runnable r) { // inject here
anotherMethodRunme= r;
}
public void anotherMethod() { // and this behavior gets changed
anotherMethodRunme.run();
}
}