JDK5.0新特性之:列舉
文/陳剛 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章)來討論這
相關文章
- JDK5.0新特性的學習--列舉JDK
- oracle12c新特性列舉說明Oracle
- JDK5.0新特性的學習--泛型(下)JDK泛型
- JDK5.0新特性的學習--泛型(上)JDK泛型
- JDK5.0新特性的學習--後設資料JDK
- JDK5.0新特性的學習--靜態匯入JDK
- JDK5.0新特性的學習--可變長引數JDK
- oracle11g新特性之--虛擬列Oracle
- ?Java基礎之Java列舉Java
- mysql之ENUM列舉型別MySql型別
- Oracle 11g新特性之收集多列統計資訊Oracle
- 10G新特性筆記之安裝新特性筆記
- Oracle11新特性——虛擬列Oracle
- Java 列舉、JPA 和 PostgreSQL 列舉JavaSQL
- 【MySQL】5.7新特性之四MySql
- 【MySQL】5.7新特性之五MySql
- 【MySQL】5.7新特性之六MySql
- 【MySQL】5.7新特性之七MySql
- C#特性學習與使用(為列舉定義Description)C#
- C# 給列舉型別增加一個備註特性C#型別
- 列舉和列舉的取值範圍
- C++ 11 新特性之容器相關特性C++
- 10G新特性筆記之備份恢復新特性筆記
- Oracle11新特性——虛擬列(二)Oracle
- Oracle 12c新特性之檢測有用的多列統計資訊Oracle
- JDK8新特性之stream()JDK
- HTML5 新特性之 WebsocketHTMLWeb
- Java8新特性之:OptionalJava
- Java 8 新特性之方法引用Java
- ES6 新特性之SymbolSymbol
- MySQL 8 新特性之Clone PluginMySqlPlugin
- Java 10 新特性之 AppCDSJavaAPP
- C++11 新特性之 lambdaC++
- C++ 11 新特性之ClassC++
- IOS11新特性之maskedCornersiOS
- Oracle12c中效能最佳化&功能增強新特性之重大突破——記憶體列儲存新特性Oracle記憶體
- 你一定需要知道的高階JAVA列舉特性!Java
- Oracle 12c新特性之Sequence的Session特性OracleSession