根据我的阅读,Groovy in
运算符调用isCase
。但是,我最近遇到了一些问题,它是这样的:
class Test {}
new Test() in Test
返回true
。但当我把它切换为:
class Test {}
new Test().isCase(Test)
返回false
。我完全不理解这背后的原因和原因,我有点害怕in
运算符是硬编码的。
答案 0 :(得分:2)
in
是一个成员资格运算符,相当于调用isCase()
方法。所以根据groovy doc:
成员资格运营商(
in
)相当于调用isCase
方法。在List
的上下文中,它等同于调用contains
,如下例所示:
def list = ['Grace','Rob','Emmy'] assert ('Emmy' in list)
相当于调用
list.contains('Emmy')
或list.isCase('Emmy')
所以在你的情况下,它将是:
Test t = new Test()
println t in Test
println Test.isCase(t)
在两种情况下都会打印出来。当你在错误的对象上调用方法时,你会变得虚假:t.isCase(Test)