談到“in”關鍵字,在Java語言裡很少用到,因為它引入得比較晚,也就是JDK5的增強 for循環。Groovy語言也把這個功能保留了下來,這樣,我們可以寫一些類似於下面的代碼:
def list = [1,2,3]
for(i in list)
{
println i
}
運行結果為:
1
2
3
這個增強的for循環也可以用在對Map的循環上,如:
def map = [a:"1",b:"2"]
for(i in map)
{
println "${i.key} : ${i.value}"
}
運行結果為:
a : 1
b : 2
除此之外,“in”關鍵字還被Groovy語言引入用在判斷一個對象是否是一個集合類的元素 。如:
def list = [1,2,3]
println 1 in list
println 5 in list
運行結果為:
true
false
其他,如Set對象也可以這樣用:
def set = [1,2,3,4,3,4] as Set
println 1 in set
println 5 in set
運行結果為:
true
false
除了這些,在Groovy語言中,“in”關鍵字還有一個用途,就是用來判定一個對象是否屬 於一個類的實例。這個用法在Java語言中是由“instanceof”關鍵字承擔的。如,我們有兩 個類A和B:
class A
{}
class B extends A
{}
現在,我們有一個對象是由B類實例化,如下:
def b = new B()
我們就可以這樣使用“in”關鍵字:
println b in A
println b in B
和Java語言中“instanceof”關鍵字的用法一模一樣,運行結果為:
true
true
當然了,Java語言的“instanceof”關鍵字也被Groovy語言繼承下來了,下面的代碼也將 打印“true”:
println b instanceof A
如果是接口和它的實現,也可以與上面一樣的使用“in”關鍵字:
interface C
{}
class D implements C
{}
def d = new D()
println d in C
println d in D
運行結果同樣是兩個“true”。