枚舉類型能夠實現接口,以及枚舉類型原理

今天在看 《漫談設計模式》的時候,看到狀態模式的時候,竟然發現,枚舉類型原來也是能夠 實現接口的。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

相關文章
相關標籤/搜索