java枚舉類型 續2

 

在Java中,枚舉類型本質上其實就是一個類,枚舉中的常量都是該枚舉類型的實例。雖然枚舉類型有一些限制,比如不能再派生出子枚舉類型,不能調用構造函數,不過我們仍然可以在枚舉類型中定義構造函數、字段和方法,例如:

Java代碼  
  1. enum Weekday {   
  2.     SUNDAY("SUN"),    
  3.     MONDAY("MON"),    
  4.     TUESDAY("TUE"),    
  5.     WEDNESDAY("WED"),    
  6.     THURSDAY("THU"),    
  7.     FRIDAY("FRI"),    
  8.     SATURDAY("SAT");   
  9.   
  10.     private String abbr;   
  11.   
  12.     public Weekday(String abbr) {   
  13.         this.abbr = abbr;   
  14.     }   
  15.   
  16.     public getAbbreviation() {   
  17.         return abbr;   
  18.     }   
  19.   
  20. }  

 上面的代碼中,Weekday枚舉有一個構造函數,這個構造函數是不能通過new語句調用的,不過可以在聲明常量的時候進行調用,只要要常量後面加上括號並傳遞參數進去就可以了,這樣不同的常量對象都有了不同的屬性值,這個值存儲在字段abbr中。另外這個枚舉類型還定義了方法,在獲得了對某個常量的引用後,就可以調用它的getAbbreviation()方法。例如:

Java代碼  
  1. System.out.println(Weekday.SUNDAY.getAbbreviation());  

 枚舉類型還有一個特殊的功能,就是在聲明常量的時候可以重寫枚舉中的方法,從而達到某種“多態”的效果,例如:

Java代碼  
  1. public enum SomeEnum {   
  2.     CONST_A, CONST_B, CONST_C {   
  3.         public void someMethod() {   
  4.             System.out.println("another description");   
  5.         }   
  6.     };   
  7.   
  8.     public void someMethod() {   
  9.         System.out.println("default description");   
  10.     }   
  11. }  

 

通過CONST_A和CONST_B調用someMethod()方法,屏幕上會打印 default description,而通過CONST_C調用someMethod()方法,則會打印 another description。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章