<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java學習

    java學習

     

    Java泛型

    2. 泛型類:泛型只在編譯時期有效,編譯后的字節碼文件中不存在有泛型信息!

    1. 泛型方法:

    public class GenericDemo {



    // 定義泛型方法
    public <K,T> T save(T t,K k) {
    return null;
    }
    // 測試方法
    @Test
    public void testMethod() throws Exception {
    // 使用泛型方法:  在使用泛型方法的時候,確定泛型類型
    save(1.0f, 1);
    }
    }

    2. 泛型類:

    public class GenericDemo<T> {



    // 定義泛型方法
    public <K> T save(T t,K k) {
    return null;
    }
    public void update(T t) {

    }

       

        // 測試方法

        @Test

        public void testMethod() throws Exception {

           

            // 泛型類:  在創建愛泛型類對象的時候,確定類型

            GenericDemo<String> demo = new GenericDemo<String>();

            demo.save("test", 1);

        }

    }
    3. 泛型接口:
    /**
     * 泛型接口
     * @author Jie.Yuan
     *
     * @param <T>
     */
    public interface IBaseDao<T> {
    void save(T t );
    void update(T t );
    }
    泛型接口類型確定: 實現泛型接口的類也是抽象,那么類型在具體的實現中確定或創建泛型類的時候確定。
    泛型的反射

    /**

     * 所有dao的公用的方法,都在這里實現

     * @author Jie.Yuan

     *

     */

    public class BaseDao<T>{

       

        // 保存當前運行類的參數化類型中的實際的類型

    private Class clazz;


    // 表名
    private String tableName;
    // 構造函數: 1. 獲取當前運行類的參數化類型; 2. 獲取參數化類型中實際類型的定義(class)
    public BaseDao(){
    //  this  表示當前運行類  (AccountDao/AdminDao)
    //  this.getClass()  當前運行類的字節碼(AccountDao.class/AdminDao.class)
    //  this.getClass().getGenericSuperclass();  當前運行類的父類,即為BaseDao<Account>
    //                                           其實就是“參數化類型”, ParameterizedType   
    Type type = this.getClass().getGenericSuperclass();
    // 強制轉換為“參數化類型”  【BaseDao<Account>】
    ParameterizedType pt = (ParameterizedType) type;
    // 獲取參數化類型中,實際類型的定義  【new Type[]{Account.class}】
    Type types[] =  pt.getActualTypeArguments();
    // 獲取數據的第一個元素:Accout.class
    clazz = (Class) types[0];
    // 表名  (與類名一樣,只要獲取類名就可以)
    tableName = clazz.getSimpleName();
    }

    /**
    * 主鍵查詢
    * @param id 主鍵值
    * @return      返回封裝后的對象
    */
    public T findById(int id){
    /*
    * 1. 知道封裝的對象的類型
    * 2. 表名【表名與對象名稱一樣, 且主鍵都為id】
    * 即,
    *  ---》得到當前運行類繼承的父類  BaseDao<Account>
    *   ----》 得到Account.class
    */
    String sql = "select * from " + tableName + " where id=? ";
    try {
    return JdbcUtils.getQuerrRunner().query(sql, new BeanHandler<T>(clazz), id);
    } catch (SQLException e) {
    throw new RuntimeException(e);
    }
    }
    /**
    * 查詢全部
    * @return
    */
    public List<T> getAll(){
    String sql = "select * from " + tableName ;
    try {
    return JdbcUtils.getQuerrRunner().query(sql, new BeanListHandler<T>(clazz));
    } catch (SQLException e) {
    throw new RuntimeException(e);
    }
    }
    }

    posted on 2017-11-14 17:34 楊軍威 閱讀(119) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久国色AV免费看图片| 91老湿机福利免费体验| 免费看香港一级毛片| 国产精品亚洲专区在线观看 | 69视频免费在线观看| 久久青青草原亚洲av无码app| 久久国产精品2020免费m3u8 | a级亚洲片精品久久久久久久 | 亚洲成人福利网站| 黄页免费的网站勿入免费直接进入| 亚洲国产成人资源在线软件| 国国内清清草原免费视频99| 亚洲国产高清国产拍精品| 国产精品免费看香蕉| sss在线观看免费高清| 亚洲综合图色40p| 3344免费播放观看视频| 亚洲国产精品一区二区三区在线观看| 毛片a级毛片免费播放下载 | 日本久久久久亚洲中字幕| 免费黄色福利视频| 在线看亚洲十八禁网站| 亚洲综合伊人久久大杳蕉| 18pao国产成视频永久免费| 亚洲国产综合AV在线观看| 国产成人精品久久亚洲| 日韩免费高清大片在线| 亚洲影院天堂中文av色| 国产亚洲一区区二区在线 | 最近中文字幕大全免费版在线| 亚洲色图校园春色| 免费看国产精品麻豆| 日本不卡免费新一区二区三区| 亚洲va在线va天堂成人| 免费一级毛片在线播放不收费| 国产真人无码作爱视频免费| 亚洲依依成人亚洲社区| 亚洲人成人一区二区三区| 毛片免费视频播放| 免费国产污网站在线观看| 亚洲色大成网站www久久九 |