泛型的定義(3)

說起泛型很多人會想起Map接口,我們來看一下Map的聲明

public interface Map<K,V>

不難看出Map接口和我們之前定義的向量類有相似之處。在類/接口的名稱後面都跟上了一對尖括號,向量類是,Map接口是<K,V>。
那麼我們可以考慮一下泛型的個數是不是也是隨意的呢?
看一下如下代碼:

class Dimen<K,T>{
	private K name;
	private T x;//向量的x座標
	private T y;//向量的y座標
	
	public void setName(K k){
		this.name = k;
	}
	
	public K getName(){
		return this.name;
	}
	
	public void setX(T x){
		this.x = x;		
	}
	public void setY(T y){
		this.y = y;		
	}	
	public T getX(){
		return this.x;
	}
	public T getY(){
		return this.y;
	}
}

這段代碼較之前的Dimen類多了一個name屬性,其類型是泛型K;x和y的類型依舊是泛型T。
那麼爲了檢驗正確性就先把主類寫完。

public class DimenTest{
	public static void main(String[]args){
		Dimen<String,Integer> dimen = new Dimen<String,Integer>();		
		dimen.setName("a");
		dimen.setX(5);
		dimen.setY(5);
		System.out.println("向量" + dimen.getName() + "=" + dimen.getX() + "i+" + dimen.getY() + "j");
	}
}

經過編譯運行,我們可以得到如下結果:
在這裏插入圖片描述
通過這個例子我們也可以對泛型提出猜想:在泛型定義時,是不是不限個數。
我們可以利用相似的方法來進行驗證這個猜想。

在我們以後的學習或開發中,我們就能夠充分利用泛型的兩個特點:

  • 泛型不限類型,可以避免向下轉型的操作,從而避開了ClassCastException異常
  • 泛型的定義不限個數,我們可以根據自己的需求合理的定義
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章