java枚舉類

jopen 9年前發布 | 12K 次閱讀 Java Java開發

 

枚舉類對象的屬性不應允許被改動, 所以應該使用  private final  修飾。

枚舉類的使用 private final 修飾的屬性應該在構造器中為其賦值。

若枚舉類顯式的定義了帶參數的構造器, 則在列出枚舉值時也必須對應的傳入參數。

必須在枚舉類的第一行聲明枚舉類對象。

枚舉類和普通類的區別:

1.使用 enum 定義的枚舉類默認繼承了 java.lang.Enum 類

2.枚舉類的構造器只能使用 private 訪問控制符

3.枚舉類的所有實例必須在枚舉類中顯式列出(以,分隔 以; 結尾). 列出的實例系統會自動添加 public static final  修飾

</div>

JDK1.5之前需要自定義枚舉類:

/枚舉類的自定義方式/
public class TestSeason {
  public static void main(String[] args){
     Season spring=Season.SPRING;
     System.out.println(spring);
     System.out.println(spring.getSeasonName());
  }
}
//枚舉類
class Season{
  //1.提供類的屬性,聲明為private final
  private final String seasonName;
  private final String seasonDesc;
  //2.聲明為final的屬性,在構造器中初始化
  private Season(String seasonName,String seasonDesc){
    this.seasonName=seasonName;
    this.seasonDesc=seasonDesc;
  }
  public static final Season SPRING=new Season("spring","春暖花開");
  public static final Season SUMMER=new Season("summer","夏日炎炎");
  public static final Season AUTOMN=new Season("automn","秋高氣爽");
  public static final Season WINTER=new Season("winter","白雪皚皚");
  //通過公共的方法來調用屬性
  public String getSeasonName() {
    return seasonName;
  }
  public String getSeasonDesc() {
    return seasonDesc;
  }
  @Override
  public String toString() {
    return "Season [seasonName=" + seasonName + ", seasonDesc="

    + seasonDesc + "]";

} } </pre>

JDK 1.5 新增的 enum 關鍵字用于定義枚舉類:

枚舉類的主要方法:

1.values()方法:返回枚舉類型的對象數組。該方法可以很方便地遍歷所有的枚舉值。

2.valueOf(String str):可以把一個字符串轉為對應的枚舉類對象。要求字符串必須是枚舉類對象的“名字”。如不是,會有運行時異常。

</div>

若需要每個枚舉值在調用實現的接口方法呈現出不同的行為方式, 則可以讓每個枚舉值分別來實現該方法

/*

  • 一.枚舉類
  • 1.如何自定義枚舉類
  • 2.如何使用enum關鍵字定義枚舉類
  • 常用的方法;values(),valueOf(String str)
  • 如何使枚舉類實現接口:可以讓不同的枚舉類的對象調用被重寫的抽象方法,執行的效果不同(相當于每個對象重寫抽象方法)
  • */ public class TestSeason1{ public static void main(String[] args){ SeasonEnum spring=SeasonEnum.SPRING; System.out.println(spring); System.out.println(spring.getSeasonName()); //1.values方法可以返回枚舉類型的對象數組,可以方便遍歷所有的枚舉值 SeasonEnum[] seasons=SeasonEnum.values(); for(int i=0;i<seasons.length;i++){ System.out.println(seasons[i]); } //2.valueOf方法可以把一個字符串轉為對應的枚舉類對象,要求字符串必須是枚舉類對象的“名字” String str="WINTER"; SeasonEnum sea=SeasonEnum.valueOf(str); System.out.println(sea); //不同的枚舉類對象調用重寫的show方法得到不同的效果 spring.show(); sea.show(); } } //接口 interface Info{ public void show(); } //實現接口的枚舉類 enum SeasonEnum implements Info{ //必須在枚舉類的第一行聲明枚舉類對象 SPRING("spring","春暖花開"){ public void show(){ System.out.println("春天在哪里"); } }, SUMMER("summer","夏日炎炎"){ public void show(){ System.out.println("生如夏花"); } }, AUTOMN("autumn","秋高氣爽"){ public void show(){ System.out.println("金色的秋天"); } }, WINTER("winter","白雪皚皚"){ public void show(){ System.out.println("冬天里的一把火"); } }; private final String seasonName; private final String seasonDesc; private SeasonEnum(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }</pre>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!