为什么两个等效属性在Groovy中不相等

时间:2016-08-25 14:06:27

标签: groovy groovyshell groovy-console

请看一下这个简单的代码:

String.metaClass {
  getA = {delegate <<= delegate}
}

assert 'a'.a == 'a'.a
Result: Assertion failed: 
    assert 'a'.a == 'a'.a
               | |      |
               | false  aa
               aa

为什么结果 FALSE

我在Windows 7 SP1上使用Groovy 2.4.7

1 个答案:

答案 0 :(得分:0)

Groovy中的String上的LeftShift会生成StringBufferdocs

所以'a'.a == 'a'.a试图在两个StringBuffers上做等号。

由于StringBuffer方法未超载,just checks if they are the same instance

,您无法使用equals执行此操作