86.自定義泛型

不使用泛型
package test;
/*
 * 測試
 * */
public class testGeneric {
	public static void main(String[] args) {
		myCollection mc = new myCollection();
		mc.set("碩鼠", 0);
		mc.set(998, 1);
		
		Integer a = (Integer)mc.get(1); //需要強制類型轉換
		String b = (String)mc.get(0);
		
		System.out.println(a);
		System.out.println(b);
	}
}

class myCollection{
	Object[] objs = new Object[5];
	
	public void set(Object obj, int index) {
		objs[index] = obj;
	}
	
	public Object get(int index) {
		return objs[index];
	}
}
泛型類的聲明
class myCollection<E>{
	Object[] es = new Object[5];
	
	public void set(E e, int index) {
		es[index] = e;
	}
	
	public E get(int index) {
		return (E)es[index];
	}
}

我們可以在類的聲明處增加泛型列表,如:<T,E,V>。

此處,字符可以是任何標識符,一般採用這3個字母。

泛型類的應用
package cn.yzy.collection;
/*
 * 測試泛型
 * */
public class testGeneric01 {
	public static void main(String[] args) {
		myCollection<String> mc = new myCollection<String>();
		mc.set("碩鼠", 0);
		mc.set("碩喵", 1);
		
		String a = mc.get(1); //加了泛型,直接返回String類型,不用強制轉換;
		String b = mc.get(0);
		
		System.out.println(a);
		System.out.println(b);
	}
}

class myCollection<E>{
	Object[] es = new Object[5];
	
	public void set(E e, int index) {
		es[index] = e;
	}
	
	public E get(int index) {
		return (E)es[index];
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章