泛型及其應用

00潤物無聲00發表於2016-08-29

什麼是泛型

  物件建立時不指定類中屬性的具體型別,而由外部在宣告及例項化物件時指定具體型別;

為什麼使用泛型

  Object類是一切資料型別的父類,可以接收任何型別的資料,都會發生向上轉型操作。

class Point{
	private Object x ;		// 表示X座標
	private Object y ;		// 表示Y座標
	public void setX(Object x){
		this.x = x ;
	}
	public void setY(Object y){
		this.y = y ;
	}
	public Object getX(){
		return this.x ;
	}
	public Object getY(){
		return this.y ;
	}
};

public class GenericsDemo04{
	public static void main(String args[]){
		Point p = new Point() ;	// 宣告一個Point的物件
		p.setX(10) ;			// 利用自動裝箱操作:int --> Integer --> Object
		p.setY("北緯210度") ;		// String --> Object
		int x = (Integer)p.getX() ;	// 取出資料先變為Integer,之後自動拆箱
		int y = (Integer)p.getY() ;	// 取出資料先變為Integer,之後自動拆箱
		System.out.println("整數表示,X座標為:" + x) ;
		System.out.println("整數表示,Y座標為:" + y) ;
	}
};

  程式碼中x,會自動發生裝箱操作,並向上轉型為Object型別,同理y也是。但是在拆箱的時候,y出現型別轉換錯誤。

  一方面拆箱裝箱消耗效能。另一方面它不會再編譯時出錯,而是在執行時,因此不安全。


泛型的應用

  解決資料型別的安全性問題。在類宣告時通過一個標識表示類中某個屬性的型別或者某個方法的返回值及引數型別。在例項化時指定具體型別即可。

  它會將型別錯誤發現在編譯時。


相關文章