隨筆-42  評論-578  文章-1  trackbacks-0


          1、原始的DAO層的類:

          package com.test;

          public class UserDao {
              
              
          public void add(User user){
                  
          //.保存實體的代碼
              }

              
              
          public User get(int id) {
                  
          //.查詢實體的代碼
                  return null;
              }


          }

          其中,User類代碼比較簡單,如下:

          package com.test;

          public class User {
              
              
          private int id;
              
          private String name;
              
          public int getId() {
                  
          return id;
              }

              
          public void setId(int id) {
                  
          this.id = id;
              }

              
          public String getName() {
                  
          return name;
              }

              
          public void setName(String name) {
                  
          this.name = name;
              }

              
          }

          2、我們將Dao層的類寫成范型的形式,有兩種寫法:
          其一、
          package com.test;

          public class EntityDao1 {
              
              
          public <T> void add(T t){
                  
          //查詢實體的代碼
              }

              
              
          public <T,ID> T get(ID id){
                  
          //.保存實體的代碼
                  return null;
              }


          }
                  范型一般用于方法的參數或者方法的返回值,上面的寫法,我們要使范型有效,就須在方法的返回類型前加入強制范型轉換。其中,add(T t)的參數用了范型,它的返回值是void型,就在void 前用強制類型轉換,即加上<T>,強制轉換成范型的形式,這樣就不會報錯了。而T get(ID id),由于它的參數和返回類型都用了范型,故要在返回類型T前強制轉換,即<T,ID>。

          其二,范型也可寫成以下形式:
          package com.test;

          public class EntityDao2<T,ID> {
              
              
          public void add(T t){
                  
          //..保存實體的代碼
              }

              
              
          public T get(ID id){
                  
          //.查詢實體的代碼
                  return null;
              }


          }
          這種形式,是把范型聲明放在類中了,就不需每個方法都寫強制類型轉換。

          看實際需要,哪種方法方便就用哪種吧!范型給Java編程帶來了許多方便,好好利用,會達到事半功倍的效果。

          本文原創,轉載請注明出處,謝謝!http://www.aygfsteel.com/rongxh7(心夢帆影JavaEE技術博客)
              

          posted on 2009-05-27 02:47 心夢帆影 閱讀(3843) 評論(6)  編輯  收藏 所屬分類: JavaSE

          評論:
          # re: Java范型的兩種寫法 2009-05-27 09:44 | 于翔
          謝謝 學習了  回復  更多評論
            
          # re: Java范型的兩種寫法 2009-05-27 13:24 | Hadis
          我覺得方法一說的是聲明泛型方法
          而方法二是聲明泛型類 和強制類型轉換無關吧?  回復  更多評論
            
          # re: Java范型的兩種寫法 2009-05-27 18:01 | YXY
          比較常用第二種寫法,不過它也有一些限制:
          如:
          不應在靜態成員中引用封閉類型參數。
          不能用基本類型實例化泛型類型參數。
          不能在數據類型轉換或 instanceof 操作中使用“外露”類型參數。
          不能在 new 操作中使用“外露”類型參數。
          不能在類定義的 implements 或 extends 子句中使用“外露”類型參數  回復  更多評論
            
          # re: Java范型的兩種寫法 2009-05-28 14:43 | 奇山
          學習了。  回復  更多評論
            
          # re: Java范型的兩種寫法 2009-06-24 00:14 | realman
          可否第種舉個例子,光這么說不大好理解,先謝過.@YXY
            回復  更多評論
            
          # re: Java范型的兩種寫法 2010-10-15 22:47 | 心夢
          心夢  回復  更多評論
            
          主站蜘蛛池模板: 威远县| 闵行区| 龙泉市| 塘沽区| 都昌县| 临江市| 家居| 青龙| 宜君县| 太保市| 资中县| 肇州县| 清涧县| 永仁县| 崇信县| 友谊县| 九台市| 萝北县| 色达县| 西峡县| 清原| 潼关县| 西宁市| 武清区| 青神县| 依兰县| 金平| 湛江市| 固镇县| 那坡县| 北碚区| 巴彦县| 湘乡市| 龙胜| 连州市| 西平县| 惠州市| 鸡东县| 黄山市| 安仁县| 卓尼县|