国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

SpringSide推薦的JDK5.0 feature

2019-11-18 15:29:18
字體:
來源:轉載
供稿:網友

原文出自SPRingSide Wiki,請留意wiki中的更新。

    隨著光陰推移,Annotation 慢慢在開源框架中推廣,泛型漸漸被程序員們用熟,加上AutoBoxing的小糖,SpringSide終于離不開JDK5.0。

1.AutoBoxing 與 For Each 循環

    本來int的非Object性就很無聊,在JDK5.0終于提供了autoboxing功能。這個語法簡化糖,被用在了每一個地方。

    for each 循環也改善了原本總要愣一下的collection遍歷。不過對于非JDK基本類型,collection必須用泛型聲明,如List<Book>。

2. 泛型

    泛型大量用于SpringSide Core中的基類,使子類更簡潔,基類更強大。當然,基類是難讀了,所以才需要社區花上這么長的時間來把<T>看到順眼。

    泛型使用的有兩個定式:

2.1 避免強制類型轉換

   假如函數輸入參數里含Class類型,而返回值又是該Class的實體,應該將該函數設為泛型函數。最典型的例子是HibernateGenericDaoSpringSide推薦的JDK5.0 feature(圖一)的get() 函數

Word-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid" twffan="done">
public <T> T get(Class<T> entityClass, Serializable id) {
   return (T) getHibernateTemplate().get(entityClass, id);
}

  其中眼花繚亂的第一個<T>聲明這是一個泛型函數,第2個T聲明返回值為T,第三個Class<T>代表 T.class。基類寫的辛勞,但子類用得爽快 

   Book book = (Book)manager.get(Book.class,1) 簡化成了 Book book = manager.get(Book.class,1);

2. 2 泛型配合反射API從T獲得 T.class。

   最典型的例子HibernateEntityDaoSpringSide推薦的JDK5.0 feature(圖一),子類只需以下定義,即獲得要治理的Entity的Class。

BookManager extends HibernateEntityDao<Book>

    此時子類只要聲明一次T,上面的Book book = (Book)manager(Book.class,1) 就能簡化成Book = manager.get(1);

    一舉兩得地既避免了強制類型轉換,又聲明了T.class 供框架使用,無須再在Manager的構造函數或getEntityClass()函數定義entityClass,。

    反射的API 詳見GenricsUtilsSpringSide推薦的JDK5.0 feature(圖一) ,精簡的對上面BookManager的定義反射代碼如下:

SpringSide推薦的JDK5.0 feature(圖二)Type genType = clazz.getGenericSuperclass();
SpringSide推薦的JDK5.0 feature(圖二)Type [] params = ((ParameterizedType) genType).getActualTypeArguments();
SpringSide推薦的JDK5.0 feature(圖二)return (Class) params[0];



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 敦化市| 鹤庆县| 灵宝市| 石景山区| 栾川县| 锡林郭勒盟| 新安县| 临江市| 万州区| 揭阳市| 白城市| 东兴市| 中西区| 凤城市| 合肥市| 诏安县| 黄龙县| 藁城市| 通辽市| 沙河市| 涞水县| 崇信县| 惠水县| 东平县| 桓仁| 五常市| 汪清县| 五莲县| 南充市| 肇源县| 凌源市| 铜鼓县| 察隅县| 青海省| 怀来县| 合川市| 大田县| 墨脱县| 南宫市| 抚远县| 兴山县|