泛型在Web中的做用

當咱們寫網頁的時候,經常會有多個DAO,咱們要寫每次都要寫好幾個DAO,這樣會有點麻煩。php

這裏寫圖片描述

那麼咱們想要的效果是什麼呢??只寫一個抽象DAO,別的DAO只要繼承該抽象DAO,就有對應的方法了。markdown

要實現這樣的效果,確定是要用到泛型的。由於在抽象DAO中,是不可能知道哪個DAO會繼承它本身,因此是不知道其具體的類型的。而泛型就是在建立的時候才指定其具體的類型。session

  • 抽象DAO
public abstract class BaseDao<T> { //模擬hibernate.... private Session session; private Class clazz; //哪一個子類調的這個方法,獲得的class就是子類處理的類型(很是重要) public BaseDao(){ Class clazz = this.getClass(); //拿到的是子類 ParameterizedType pt = (ParameterizedType) clazz.getGenericSuperclass(); //BaseDao<Category> clazz = (Class) pt.getActualTypeArguments()[0]; System.out.println(clazz); } public void add(T t){ session.save(t); } public T find(String id){ return (T) session.get(clazz, id); } public void update(T t){ session.update(t); } public void delete(String id){ T t = (T) session.get(clazz, id); session.delete(t); } }
  • 繼承抽象DAO,該實現類就有對應的增刪改查的方法了。

CategoryDaothis

public class CategoryDao extends BaseDao<Category> {

}

BookDaospa

public class BookDao extends BaseDao<Book> {


}
相關文章
相關標籤/搜索