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

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

Jakarta Commons實現BeanComparator

2019-11-18 14:17:35
字體:
來源:轉載
供稿:網友

  作者: BUILDER.COM

反射是可以節省時間和工作的一個強大工具,讓它有用的一種方式是通過使用BeanComparator。

BeanComparator是可以應用于任何javaBean 的通用比較器(comparator),因為良好的底層bean反射系統,他們可以用bean屬性、數組、集合和映射處理一個bean。

假如我們一個類型為Person的JavaBean的列表(java.util.List),而Person有一個整型的年齡,字符串型的名字和一個國家,類型為Country的另外一個JavaBean (它又有一個字符串的名字),那么我們就可以用一個BeanComparator 以任何我們想要的方式對它進行排序。

一些范例:

Listpeople = ...; // Person對象的列表
BeanComparator comp = new BeanComparator("age");
Collections.sort(list, comp);

BeanComparator comp = new BeanComparator("name");
Collections.sort(list, comp);

BeanComparator comp = new BeanComparator("country.name");
Collections.sort(list, comp);
沒有必要寫一個帶很多排序屬性選項的PersonComparator類,而是寫一個單獨的BeanComparator類處理全部事情。

所有的魔術都被底層的反射API處理了。下面是建立在JakartaCommons BeanUtils 工程上的一個簡單的BeanComparator:

importjava.util.Comparator;
import org.apache.commons.beanutils.PRopertyUtils;
import org.apache.commons.collections.comparators.ComparableComparator;

public class BeanComparator implements Comparator {

private String attribute;
private Comparator comp = new ComparableComparator();

public BeanComparator(String attrib) {
this.attribute = attrib;
}

public int compare(Object o1, Object o2) {
if(o1 == null) {
return1;
} else
if(o2 == null) {
return-1;
}

try {
Objectret1 = PropertyUtils.getProperty(o1, this.attribute);
Objectret2 = PropertyUtils.getProperty(o2, this.attribute);

returnthis.comp.compare(ret1, ret2);
} catch(Exception e) {
return0;
}
}
}
在這個例子中異常處理被簡化了并且它假設要進行比較的bean屬性通過使用Jakarta Commons Collections工程中的ComparableComparator實現了Comparable接口。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江口县| 盱眙县| 宝清县| 贵德县| 宁陵县| 铁岭县| 岑溪市| 公安县| 青田县| 长丰县| 霍林郭勒市| 鲜城| 来凤县| 湘潭县| 当雄县| 藁城市| 昌图县| 永和县| 綦江县| 筠连县| 正阳县| 高台县| 江陵县| 临高县| 合川市| 中方县| 蒙阴县| 洛隆县| 类乌齐县| 新源县| 巨野县| 阿合奇县| 扬州市| 土默特右旗| 临桂县| 大名县| 乡城县| 五台县| 北辰区| 鄱阳县| 侯马市|