Groovy Tip 36 “in”关键字
谈到“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”。