JDK1.5之 新特性

JDK1.5新特性

"JDK1.5"的一個重要主題就是通過新增一些特性來簡化開發,這些特性包括:泛型,for-each 循環, 自動裝箱/拆箱,枚舉,可變參數, 靜態導入,註解, 格式化輸出。使用這些特性有助於我們編寫更加清晰,精悍,安全的代碼。

JDK1.5新特性之泛型(Generic)
泛型只是編譯時的概念。供編譯器進行語法檢查時用的。目的是努力將運行時異常轉換爲編譯時錯誤,解決模板編程問題。示例如下:

import java.util.Date;

/**
 * JDK1.5新特性驗證
 * 泛型
 * 
 * @author  cKF61853
 * @version  1.0, 2012-11-25
 */
public class Demo
{
    public static <T> T create(Class<T> cls)
    {
        try
        {
            return cls.newInstance();
        }
        catch (InstantiationException e)
        {
            e.printStackTrace();
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace();
        }
        return null;
    }
    
    public static void main(String[] args)
    {
        Date d = Demo.create(Date.class);
        System.out.println(d);
        
        StringBuffer str = Demo.create(StringBuffer.class);
        System.out.println(str.getClass().getName());
    }
    
}
//控制檯輸出
Fri Nov 30 16:33:49 CST 2012
java.lang.StringBuffer

JDK1.5新特性之增強for循環(Enhanced "for" loop)
遍歷數組或者集合中的元素,減少編程量。示例如下:

public static void main(String[] args)
{
        Collection<String> c = new ArrayList<String>();
        c.add("aa");
        c.add("bb");
        for (String str : c)
        {
              System.out.println(str);
        }
}
//控制檯輸出
aa
bb

JDK1.5新特性之自動拆箱/裝箱(Automatic boxing/unboxing)

Integer i = new Integer(2);

//i自動拆箱爲int類型
System.out.println(i == 2);

//3自動裝箱爲Integer類型
System.out.println(i.equals(3));

JDK1.5新特性之可變參數(Variable parameters)

方法的參數是不固定的我們一般會使用重載或者使用數組參數。重載需要些更多寫更多的方法,數組需要在使用時先聲明。可變參數是一個不錯的解決方案。示例如下:

public static void main(String[] args)
{
        VariableDemo vd = new VariableDemo();
        vd.speak("悟空", "人和妖精都是媽生的,");
	vd.speak("悟空", "人和妖精都是媽生的,", "妖是妖他媽生的,", "N...", 123456);
}
    
public void speak(String name, Object... arguments)
{
        System.out.print(name + ": ");
        for (Object object : arguments)
        {
              System.out.print(object);
        }
        System.out.println();
}
//控制檯輸出
悟空: 人和妖精都是媽生的,
悟空: 不同的人是人他媽生的,妖是妖他媽生的,N ...123456

JDK1.5新特性之註解(Annotation)

jdk1.5以後,系統提供單個 annotation
@Override 用來說明一個方法是覆寫方法,並檢查其是否符合覆寫規則。
@Deprecated 用來說明某個類或者方法已經不建議使用,提供警告信息。
@SuppressWarnings(value)  用來壓制某個警告信息。

JDK1.5新特性之枚舉(Enumerate)

當每一類型可取值範圍是有限的時候,可以使用枚舉,例如每個學生登記只能用ABCD表示,如果直接用E的話,那麼編譯不會出錯,但是卻不符合輸入要求,而使用枚舉增加程序的易讀性和健壯性。

JDK1.5新特性之格式化輸出(Formatted print)

C語言中printf()風格的格式化輸出。示例如下:

public static void main(String[] args)
{
        int x = 5;   
        double y = 5.332542;   
        //The old way   
        System.out.println("Row 1: ["+x+" "+y+"]");   
        //The new way   
        System.out.format("Row 2: [%d %f]\n", x,y);   
        //or   
        System.out.printf("Row 3: [%d %f]\n", x, y);   
}

JDK1.5新特性之靜態導入(Static import)
靜態導入允許您在調用其它類中定義的靜態成員時,可以忽略類名。實例代碼如下:
//靜態成員定義
package cn.j5newfeatures.staticimport;

/**
 * JDK1.5新特性驗證
 * 靜態導入
 * 
 * @author  cKF61853
 * @version  1.0, 2012-2-9
 */
public class StaticImportInstance
{
    public static final int A = 10;
    public static final double B = 20.00;
    public static final double C = 30.00;
    
    public static double add (double one, double two)
    {
        return one + two;
    }
    
    public static double adder (double one, double two, int three)
    {
        return one + two + three;
    }
    
    public static void print(String str)
    {
        System.out.println("OMG:" + str);
    }
}

//靜態成員調用
package cn.j5newfeatures.staticimport;

//此處部分是關鍵
import static cn.j5newfeatures.staticimport.StaticImportInstance.A;
import static cn.j5newfeatures.staticimport.StaticImportInstance.B;
import static cn.j5newfeatures.staticimport.StaticImportInstance.C;
import static cn.j5newfeatures.staticimport.StaticImportInstance.add;
import static cn.j5newfeatures.staticimport.StaticImportInstance.adder;
import static cn.j5newfeatures.staticimport.StaticImportInstance.print;

/**
 * JDK1.5新特性驗證
 * 靜態導入測試
 * 
 * @author  cKF61853
 */
public class TestStaticImport
{
    public static void main(String[] args)
    {
        print("A的值是" + A);
        print("B的值是" + B);
        print("C的值是" + C);
        
        System.out.println(add(A, B));
        System.out.println(adder(B, C, A));
        
        print("靜態導入測試...");
    }
    
}
//控制檯輸出
OMG:C的值是30.0
30.0
60.0
OMG:靜態導入測試...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章