在Groovy中,一切都是对象,甚至是数字
assert 1.getClass() == Integer
在Groovy中,您可以覆盖运行时现有类中的现有方法
Integer.metaClass.or = { right -> println "$delegate or $right" }
现在我们可以使用管道(|)
对任何号码进行呼叫或操作1.or("hello") // prints: 1 or hello
1 | "hello" // prints: 1 or hello
到目前为止一切顺利。现在让我们尝试或带有整数的整数
2.or(3) // nothing happens
2 | 3 // nothing happens
这引导我们进入问题:
答案 0 :(得分:1)
它可能选择一个已经存在的or
方法,该方法采用整数,而不是更通用的对象版本。
如果你这样做,它是否有效:
Integer.metaClass.or = { Integer right -> println "$delegate or $right" }
目前不在电脑上,因此无法验证: - /