看來不管我做什麼我都會得到錯誤的結果。如何測試列表<String>爲空或無效?
我的列表定義如下:
private List<String> selectedPriorities;
沒有什麼奇怪的或幻想上的getter/setter:
public void setSelectedPriorities(List<String> selectedPriorities) {
this.selectedPriorities = selectedPriorities;
}
public List<String> getSelectedPriorities() {
return selectedPriorities;
}
在會話bean我想根據內容來改變不同的列表(或缺乏)此列表。
這裏是代碼:
List<String> restrictList = new ArrayList<String>();
restrictList.add("lower(logs.clazz) like lower(concat(#{logs.clazz},'%'))");
restrictList.add("lower(logs.rule) like lower(concat(#{logs.rule},'%'))");
PrioritySelectorBean selectorBean = (PrioritySelectorBean) Component.getInstance("prioritySelectorBean",true);
System.out.println("constructRestrictionList selectorBean "+selectorBean.getSelectedPriorities());
if (selectorBean.getSelectedPriorities() == null) {
System.out.println("IS NULL");
return restrictList;
}
if (selectorBean.getSelectedPriorities().isEmpty()){
System.out.println("IS EMPTY");
}
if (selectorBean.getSelectedPriorities().size()<1){
System.out.println("HAS NOTHING IN IT");
return restrictList;
}
System.out.println("NOT NULL");
restrictList.add("lower(logs.priority) in (#{prioritySelectorBean.selectedPriorities})");
它總是落空至NOT NULL並添加字符串restrictList。這讓我瘋狂!我如何在這個列表中檢測到虛無?這裏是日誌片斷
14:24:10,057 INFO [STDOUT] constructRestrictionList selectorBean []
14:24:10,057 INFO [STDOUT] NOT NULL
我不太清楚,但是,而不是使用==,使用equals()方法,我認爲這個名字是蘇瑞的一種方法。如果我錯了,請刪除此評論 – 2011-03-08 19:32:42
似乎你真的有一個非空列表:)什麼doeas大小()返回? .get(0)返回什麼? – kostja 2011-03-08 19:32:44
@Chuck Birkin:val == null在這裏完全沒問題。如果它是空的,最好不要調用對象上的方法;) – kostja 2011-03-08 19:34:16