java編程思想之泛型類

泛型深入研究:

爲了實現一個泛型類,暫不知道類的類型,利用類生成器生成類對象(可以生成不同的類對象)

首先定義生成器接口:

package com;

public interface Gernerator<T> {
	T next();
}

這是定義的生成器接口(泛型)

然後就是頂一個泛型類來實現這個接口的方法

public class test<T> implements Gernerator<T>{
	private Class<T> types;
	public test(Class<T> types)
	{
		this.types=types;
	}
	@Override
	public T next() {
		// TODO Auto-generated method stub
		try {
			return types.newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
	public static <T> Gernerator<T> creat(Class<T> type)
	{
		return new test<T>(type);
	}
	public static void main(String[] args) {
		Gernerator<countednumber> gen=test.creat(countednumber.class);
		for(int i=0;i<5;i++)
		{
			System.out.println(gen.next());
		}
	}
}
class<T>是一個類的泛指,也就是一個類的名字,這個名字可以生成類對象(大致可以這麼理解),
types.newInstance()
這就是生成類的對象,在next()方法裏生成對象,這個泛型類有一個成員是不確定的類,爲了調用類生成器的next()方法生成類對象,就需要有一個Gernerator接口類

或者是接口類的子類對象,這裏用到了creat方法,傳遞的參數是一個位置的類名,接下來需要自己定義一個類:

package com;

public class countednumber {
	private static long number=0;
	private final long id=number++;
	public long id()
	{
		return id;
	}
	public String toString()
	{
		return ("countednumber"+" "+id);
	}
}

這個類記錄了從開始到結束共創建了多少個類對象,並重載了toString()方法,方便打印輸出,這樣就實現了在不知道類名的情況下,創建多個未知類名的對象,執行結果

如下所示:

countednumber 0
countednumber 1
countednumber 2
countednumber 3
countednumber 4



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