隨筆-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 心夢帆影 閱讀(3833) 評論(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 | 心夢
          心夢  回復  更多評論
            
          主站蜘蛛池模板: 广汉市| 巴彦淖尔市| 扶余县| 瑞安市| 高雄市| 游戏| 苏尼特右旗| 盐城市| 乐清市| 汽车| 台北市| 蓝山县| 澄江县| 湖州市| 手机| 南城县| 嘉义县| 台江县| 磴口县| 米易县| 满城县| 凤阳县| 惠水县| 库尔勒市| 临高县| 达孜县| 尼勒克县| 怀仁县| 山阴县| 高碑店市| 垣曲县| 通化县| 平定县| 延庆县| 寻甸| 五指山市| 孝感市| 调兵山市| 广宗县| 江华| 和平县|