Java中的泛型類和泛型方法區別和聯繫

泛型的概念大家應該都會,不懂的百度或者google,在java中泛型類的定義較爲簡單
<span style="font-size:18px;"><span style="font-size:18px;">public abstract class BaseEaoImpl<T> implements BaseEao<T>{}</span></span>

這樣就定義了一個泛型類,在實例化這個類的時候,必須指明泛型T的具體類型(比例爲Buttons實體),例如

<span style="font-size:18px;"><span style="font-size:18px;">public class ButtonBeanImpl extends BaseBeanImpl<Buttons> implements ButtonBean{}</span></span>
但是Java中的泛型方法就比較複雜了。

       泛型類,是在實例化類的時候指明泛型的具體類型;泛型方法,是在調用方法的時候指明泛型的具體類型。


<span style="font-size:18px;"><span style="font-size:18px;">	@Override
	public <T> PageModel queryPageModelByLikeAndEqual(Class<T> entityClass,
			LinkedHashMap<Object, Object> equalFields,
			LinkedHashMap<String, String> likeFields,
			LinkedHashMap<String, String> orderByFields, PageModel<T> pageModel) {
		return this.queryPageModel(entityClass, equalFields, null, likeFields, null,
				orderByFields, null, pageModel);
	}</span></span>


泛型類的調用
<span style="font-size:18px;"><span style="font-size:18px;">@Override
	public  PageModel<College> queryCollege(LinkedHashMap<Object, Object> equalFields,
			LinkedHashMap<String, String> likeFields,PageModel<College> pageModel) {
		// 初始化Equal查詢條件承載體
	    LinkedHashMap<String, String> orderByFields =new  LinkedHashMap<String, String>();	
	    orderByFields.put("name", "DESC");
		return commonEao.queryPageModelByLikeAndEqual(College.class, equalFields, likeFields, orderByFields, pageModel);
	}</span></span>

說明一下,定義泛型方法時,必須在返回值前邊加一個<T>,來聲明這是一個泛型方法,持有一個泛型T,然後纔可以用泛型T作爲方法的返回值。

Class<T>的作用就是指明泛型的具體類型,而Class<T>類型的變量c,可以用來創建泛型類的對象


當然,泛型方法不是僅僅可以有一個參數Class<T>,可以根據需要添加其他參數。

       爲什麼要使用泛型方法呢?因爲泛型類要在實例化的時候就指明類型,如果想換一種類型,不得不重新new一次,可能不夠靈活;而泛型方法可以在調用的時候指明類型,更加靈活。

       爲什麼使用泛型類呢?使用泛型類可以解決重複業務的代碼的複用問題,也就是業務顆粒的複用,同時使用泛型

類型在編譯階段就可以確定,並發現錯誤,類型的轉換都是自動和隱士的,提高了代碼的準確率和複用率。



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