另一种解决方案使用功能方法。您只需要根据下一个模板声明枚举类:
public enum Direction { UNKNOWN, FORWARD, BACKWARD; public interface SwitchResult { public void UNKNOWN(); public void FORWARD(); public void BACKWARD(); } public void switchValue(SwitchResult result) { switch (this) { case UNKNOWN: result.UNKNOWN(); break; case FORWARD: result.FORWARD(); break; case BACKWARD: result.BACKWARD(); break; } }}如果尝试至少在没有一个枚举常量的情况下使用此函数,则会出现编译错误:
getDirection().switchValue(new Direction.SwitchResult() { public void UNKNOWN() { } public void FORWARD() { } // public void BACKWARD() { } // <- Compilation error if missing});


