在Java語言編程中,對對象的非空判斷是一個永恆的話題。例如,我們經常需要對一個字 符串進行如下的判斷:
if(str!=null&&!str.equals(""))
{
......
}
輸入這樣的語句的確使人生厭,而且有時候還會忘掉輸入“!str.equals ("")”語句中的“!”導致代碼出現邏輯錯誤。
而敏捷的Groovy語言開發就不需要我們擔心這樣的問題。同樣的判斷語句,我們只需要輸 入下面的代碼:
def str = null
if(str)
{
println"str is not null"
}
else
{
println'str is null'
}
這個語句段的執行結果為:
str is null
可以看出,if(str)判斷語句,當str為null的時候,不執行。你可能要問,當str = ''的 時候會怎樣呢?
def str = ''
if(str)
{
println"str is not null"
}
else
{
println'str is null'
}
執行結果還是:
str is null
這樣,我們可以把開頭的那段Java代碼改寫成如下的代碼了:
if(str)
{
......
}
這樣就簡潔多了。不是嗎?
除了字符串對象,那其他對象的非空判斷呢?我們來看下面的例子:
def map = ['key1':'value1']
if(map)
{
println'map is not null'
}
else
{
println'map is null'
}
map.remove('key1')
if(map)
{
println'this time,map is not null'
}
else
{
println'this time,map is null'
}
執行結果為:
map is not null
this time,map is null
同樣,我們來看看List對象:
def list = []
if(list)
{
println'list is not null'
}
else
{
println'list is null'
}
list<<'a'
if(list)
{
println'here, list is not null'
}
else
{
println'here, list is null too'
}
輸出結果為:
list is null
here, list is not null
如果是Domain對象呢?
class Empl
{
String name
}
執行下面的語句:
Empl em = new Empl()
if(em)
{
println'em is not null'
}
else
{
println'em is null'
}
結果為:
em is not null
可以看出,對於Domain對象,只要該對象不是null,則if(em)條件為true。