2009-12-16 42 views
8

我有一個setter方法。一步檢查字符串的空值和空白

然後,當另一個(說生成)方法運行,我需要檢查我的領域的價值。 所以在String屬性的情況下,我需要知道它是否包含值或者是否沒有設置。所以它可能是空的,「」或其他有意義的東西,有三種可能性。 它是相當無聊首先檢查空值:

if (s != null) 

然後空字符串

if (!s.isEmpty()) 

是有一個單步檢查嗎?你可以告訴我,我可以使用空字符串初始化我的字符串字段。 [它是共同的嗎?但是如果有人將一個空值傳遞給setter方法setS會怎麼樣? 所以我們總是需要檢查Object值是否爲null,然後才能使用該對象進行操作?

那麼,是一個setter方法可以檢查它的值,如果該字段爲空,getter方法也可以返回一個非空值。但它是唯一的解決方案嗎?對於程序員來說,在getters & setter中做的工作太多了!

+0

是的Apache庫。 爲什麼又一次,它不是在java的發行版中? – EugeneP

+2

需要考慮的事項:null表示未設置,「」表示設置爲空。 – Pat

+0

同意帕特在這裏。有時看起來這只是不必要的保留,但它們在語義上是不同的。如果成員爲空,則表示「沒有值」,而空字符串「有值;空字符串」。基於這一事實,方法具有不同的行爲(通過設計)是很常見的。 – charstar

回答

14

下議院圖書館,StringUtils.isBlank()StringUtils.isEmtpy()

的isEmpty相當於

s == null || s.length() == 0 

的isBlank相當於

s == null || s.trim().length() == 0 
+1

小小的評論,你所描述的是isNotBlank&isNotEmpty :) – EugeneP

+0

哦,是的,好點,改變。 – Joel

3

在Jakarta通用有一個StringUtils.isEmpty(字符串)。

-3

嘗試這種

如果(一個或多個){

}

+0

適用於Groovy ... –

+0

這不是Java風格。您只能使用布爾表達式作爲條件。 – whiskeysierra

4
if(s != null && !"".equals(s)){ 
// this will work even if 's' is NULL 
} 
+1

雖然這可以防止出現空異常,但這不是等效測試:如果s爲null,則表達式將解析爲true。這是測試s是否包含空字符串的無效方法,它不會測試s是否爲空並且不爲null **。差異很重要! –

+0

謝謝,修改了答案 –

1

使用org.apache.commons.lang.StringUtils,所述方法StringUtils.isNotBlank檢查兩個無效和空虛。