JDK5.0新特性之:列舉

唐玄奘發表於2017-12-04

文/陳剛 2005-11-09 

一、前言

  JDK5.0出來有快一年了吧,泛泛的瀏覽過一些資料,不知道是文章寫得生澀,還是我愚笨,總之是沒太明白。反正所做的專案也沒有用到,所以放在了一邊。近來公司平臺升級到JBOSS4和JDK5,看來要仔佃看它一看看。上網搜尋了一些資料,花了兩小時閱讀,算明白了一些,好象也不是很難。現將心得和理解結整合文,以便後來者。

  JDK5.0主要有哪些新特性呢?如下列表

  • 泛型
  • 增強的for迴圈
  • 自動裝箱和自動拆箱
  • 型別安全的列舉
  • 可變長度引數
  • 靜態引入
  • 後設資料(註解)
  • C風格的格式化輸出

  本文先講“型別安全的列舉”。

二、舊的歷史

  舉個例:有一個如下的“花(flower)”類,它有一個顏色(color)屬性,用int型來表示其顏色。

public class Flower {
    private int color;
    public void setColor(int color) {
        this.color = color;
    }
   
    public int getColor(){
        return color;
    }
}

  這時一般我們會建立一個常量類,來存放顏色常量,如下:

public interface Color {
    int RED = 0;
    int BLACK = 1;
    int YELLOW = 2;
    int BLUE = 3;
    int WHITE = 4;
    int ORANGE = 5;
}

  以後我們用的時候就可以這樣:

public class Client {
    public static void main(String[] args) {
        Flower f = new Flower();
        f.setColor(Color.RED);
    }
}

  Color類就是一個我們自己來實現的列舉類,當然它並不是嚴格意義上的列舉類,而且JDK5.0之前還沒有列舉。這時會出現一個問題:setColor引數是int型,那麼也許使用者會不小心用一個非法的int值賦進去,這樣就可能產生BUG,如:f.setColor(100);顯示100並非是我們設定中的顏色值。

  在那本有名的java著作<<Effective java>> Joshua Bloch,用了專門的一章(第5章)來討論這


相關文章