泛型:
Java 語言中最輕易引發錯誤的因素之一 -需要不斷地將表達式向下類型轉換(downcast)為比其靜態類型更為具體的數據類型。比如將Vector中的數據取出來之後,強迫轉換為實際類型。在 JDK1.5之前,不得不這樣做,JDK1.5之後,程序員再也不用這麼辛苦了.
代碼
- //JDK1.5 Vector<String> v=new Vector<String>();
- v.add("A"); String a=v.elementAt(0);//留心這裡,get出來之後,直接就是String類型的了
- //JDK1.4
- Vector v=new Vector(); v.add("A");
- String b=(String)v.elementAt(0);//JDK1.4的作法
基礎類型的主動拆箱/裝箱
Java中的聚集類,只能處理對象類型,對於基礎類型boolean,byte,short...int,long等,要想放到聚集中往,則必需轉換成對應的包裝類 Boolean,Byte,Short...Integer,Long等類型。而JDK1.5開端支撐的基礎類型與對應包裝類型的主動拆箱/裝箱,則省往了許多麻煩。
代碼
- //JDK1.5 Integer a=1;
- Integer b=2; System.out.println(a+b);
- //JDK1.4
- Integer a=new Integer(1); Integer b=new Integer(2);
- System.out.println(a.intValue()+b.intValue());
很惋惜的是,在J2ME風行的開發平台上既不能用泛型,也不能用基礎類型的主動拆/裝
這裡先容一種方法,使大家可以在開發J2ME的時候也享受到Java的新功效,下降大家的工作難度
1.需要的安裝的軟件及下載地址
JDK1.5+ sun.com
wtk sun.com
eclipse eclipse.org
ant ant.apache.org
antenna sf.Net/projects/antenna
2.開端
新建項目,選擇1.5或更高的編譯級別,類庫中導進j2me開發需要的midp和cldc包,然後就可以用泛型寫J2ME的代碼了
3.編譯,預校驗,打包
采用ant和antenna來幫助
留心編譯時不能指定source為1.5以下
應用antenna的wtkpreverify校驗
將資源文件打進包中
應用Jad天生器產生jad文件
4.留心事項
a.字符串連接,JDK1.5會主動用StringBuilder來優化,這個類在J2ME中不存在,留心在代碼中不能省事直接用 "a"+i+"b",需要用StringBuffer來寫
b.基礎類型的裝箱,即由基礎類型轉為包裝類型,編譯器采用類似 Integer.valueOf(int)的方法來轉的,此方法在J2ME中不存在,需要留心,涉及到基礎類型轉包裝類型的,要在代碼中自己轉,以避免呈現上面的方法調用
附編譯腳本:
代碼
- <?XML version="1.0"?> <project name="project" default="build" basedir=".">
- <!-- 設置WTK屬性. --> <property name="wtk.home" value="C:\WTK25" />
- <property name="wtk.midp.version" value="1.0" /> <property name="wtk.cldc.version" value="1.0" />
- <!-- Ant J2ME任務定義 --> <taskdef resource="antenna.propertIEs"
classpath="D:\eclipse\antenna.jar"/>
- <!-- 設置 --> <property name
- ="jar.name" value="Test"/>
- <target name="build"> <!-- 編譯 -->
- <Javac srcdir="src" destdir="classes" classpath="${wtk.home}\lib\cldcapi10.jar;${wtk.home}\lib\midpapi10.jar"/> <!-- 打包 -->
- <jar destfile="${jar.name}.jar" basedir="classes"/> <!-- 預校驗 -->
- <wtkpreverify jarfile="${jar.name}.jar"/> <!-- 打進資源 -->
- <exec executable="jar.exe"> <arg line="-uf ${jar.name}.jar -C res ."/>
- </exec> </target>
- </ project>