java基礎學習-泛型

泛型

泛型(Generic type 或者 generics)是對Java語言的類型系統的一種擴展,以支持創建可以按類型進行參數化的類。可以把類型參數看作是使用參數化類型時指定的類型的一個佔位符,就像方法的形式參數是運行時傳遞的值的佔位符一樣。這種參數類型可以用在類、接口和方法的創建中,分別稱爲泛型類、泛型接口、泛型方法。

泛型的好處

類型安全。 泛型的主要目標是提高 Java 程序的類型安全。通過知道使用泛型定義的變量的類型限制,編譯器可以在一個高得多的程度上驗證類型假設。沒有泛型,這些假設就只存在於程序員的頭腦中(或者如果幸運的話,還存在於代碼註釋中)。
消除強制類型轉換。 泛型的一個附帶好處是,消除源代碼中的許多強制類型轉換。這使得代碼更加可讀,並且減少了出錯機會。

使用語法

1)泛型的類型參數只能是類類型(包括自定義類),不能是簡單類型。
2)同一種泛型可以對應多個版本(因爲參數類型是不確定的),不同版本的泛型類實例是不兼容的。
3)泛型的類型參數可以有多個。
4)泛型的參數類型可以使用extends語句來做類型限制(不管後面是接口還是類都用extent),例如<T extends superclass>。習慣上成爲“有界類型”。默認情況,extends object。
5)泛型的參數類型還可以是通配符類型(應對未知類型)。
例如Class<?> classType = Class.forName(ArrayList);
Class<?> classType = Class.forName(LinkedList);

簡單例子

public class GenericFoo<T> {
	private T foo;

	public T getFoo() {
		return foo;
	}

	public void setFoo(T foo) {
		this.foo = foo;
	}

	public static void main(String[] args) {
		GenericFoo<Boolean> foo1 = new GenericFoo<Boolean>();
		GenericFoo<Integer> foo2 = new GenericFoo<Integer>();
		foo1.setFoo(new Boolean(false));
		foo2.setFoo(new Integer(3));
		Boolean b = foo1.getFoo();
		Integer i = foo2.getFoo();
		System.out.println(b);//false
		System.out.println(i);//3
		// foo1 = foo2;
		GenericFoo a = new GenericFoo();
		a.setFoo("hello");
		String str = (String) a.getFoo();
		System.out.println(str);//hello
	}
}

結合EE使用
基本接口類
public interface IBaseDao<T> {
	public Serializable save(T o);
}

節本實現類
public class BaseDaoImpl<T> implements IBaseDao<T> {

	@Override
	public Serializable save(T o) {
		return null;
	}

}

業務實現接口
public interface IUserDao extends IBaseDao<User> {

}
業務實現接口
public class UserDaoImpl extends BaseDaoImpl<User> implements IUserDao  {

}

調用
public class Client {

	public static void main(String[] args) {
		IUserDao daoI=null;
		User t=null;
		daoI.save(t);

	}
}





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