今天在看 《漫談設計模式》的時候,看到狀態模式的時候,竟然發現,枚舉類型原來也是能夠 實現接口的。java
真是漲見識了。設計模式
並且 枚舉類型的靜態屬性也是能夠 實現方法的, 只是若是沒有 實現接口方法的狀況下,外部是調用不到方法的。設計
public interface IColor { public void test(); } public enum Color implements IColor { RED { public void test() { System.out.println(">>>test"); } }, BLUE { public void test() { System.out.println(">>>test"); } }, } 方法調用: Color.BLUE.test(); 若是 枚舉 Color 沒有實現 IColor 不會報錯,但是 Color.BLUE.test(); 就會報錯,找不到方法。 所以只有在實現的接口的時候才能夠調方法的。
其實Java的枚舉類型沿襲了「Effective
Java」 一書中提出的Typesafe Enum模式, 編譯
器在編譯enum類型時, 會生成一個真正的類代替
枚舉類型。 其實Java沒有真正的枚舉類型, 這個
新生成的類繼承於java.lang.Enum類, 每一個枚舉
值的類型都是這個新類的子類。
code