J2SE1.5新特性簡介
|
Java2標準版(Java 2 Platform, Standard Edition, J2SE)1.5即將正式推出,這一次的版本更新不同于以往,它帶來了很多里程碑式的革新,SUN將其綽號取名為“虎”。這一次的變革將是Java誕生以來從未有過的,它給我們帶來了耳目一新的感覺。下面我們就來欣賞一下其中的部分典型變化:
1. 自動包裝和解包(Autoboxing and unboxing)
代碼示例
往一個ArrayList中加入一個整數,1.5版本以前的版本寫法是:
| List list = new ArrayList(); list.add( new Integer( 10 ) ); |
而在1.5版本中可以寫為:
| list.add( 10 ); |
因為,在1.5版本中,對一個整數進行包裝,使之成為一個Integer對象(即包裝,boxing),然后加入到一個ArrayList中的做法被認為是沒有必要的,反之,解包(unboxing)的做法也是沒有必要的,這樣的代碼只是增加了程序的文本長度而已,所以1.5版本支持了自動包裝和解包操作,對于bool/Boolean,byte/Byte,double/Double,short/Short,int/Integer,long/Long,float/Float的相應包裝/解包操作都進行了支持,從而使代碼變得簡單。
2. 更優化的循環語句(The inhanced for loop)
代碼示例
一個典型的遍歷數組的循環語句,1.5版本以前的寫法是:
| for ( Iterator iterator = list.iterator(); iterator.hasNext(); ) { Integer n = (Integer)iterator.next(); ... }//for |
而在1.5版本中可以寫為:
| for ( Integer n : list ) { ... }//for |
顯然1.5版本的寫法比以前是大大簡化了,但是在需要修改集合,比如刪除其中元素時不能采用這種寫法。之所以Java1.5版本沒有象C#那樣干脆定義一個foreach關鍵詞,主要是因為SUN認為增加一個專門的關鍵詞成本太高了(too costly)。但1.4版本中就曾經增加了assert關鍵詞,1.5版本中也新增加了enum關鍵詞,因此這一解釋恐怕并不那么令人信服。