隨筆-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 | 心夢
          心夢  回復  更多評論
            
          主站蜘蛛池模板: 皋兰县| 海南省| 黎川县| 开阳县| 安阳市| 临海市| 静乐县| 定结县| 嘉善县| 贵南县| 宁海县| 普兰县| 西吉县| 曲麻莱县| 鄂州市| 封丘县| 红桥区| 蓬溪县| 虎林市| 斗六市| 海城市| 嘉兴市| 盘锦市| 巴彦淖尔市| 瑞丽市| 错那县| 恩施市| 赣榆县| 会东县| 新邵县| 东光县| 丰顺县| 札达县| 厦门市| 淅川县| 陆川县| 朝阳市| 工布江达县| 巩义市| SHOW| 太和县|