Groovy中两个等价属性不相等的原因

Groovy中两个等价属性不相等的原因,groovy,groovyshell,groovy-console,Groovy,Groovyshell,Groovy Console,请查看以下简单代码: String.metaClass { getA = {delegate <<= delegate} } assert 'a'.a == 'a'.a 为什么结果为假 我在Windows7SP1上使用Groovy2.4.7,在Groovy中对字符串执行LeftShift生成一个StringBuffer() 因此,'a'.a='a'.a试图在两个StringBuffers上进行相等 使用StringBuffer无法做到这一点,因为equals方法没有重载,并且

请查看以下简单代码:

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

assert 'a'.a == 'a'.a
为什么结果为假


我在Windows7SP1上使用Groovy2.4.7,在Groovy中对字符串执行LeftShift生成一个
StringBuffer
()

因此,
'a'.a='a'.a
试图在两个StringBuffers上进行相等


使用
StringBuffer
无法做到这一点,因为
equals
方法没有重载,并且在Groovy中对字符串执行左移位会生成
StringBuffer
()

因此,
'a'.a='a'.a
试图在两个StringBuffers上进行相等


使用
StringBuffer
无法做到这一点,因为
equals
方法没有重载,而且

Got!所以它将是{(delegate或just
delegate+delegate
get!所以它将是{(delegate或just
delegate+delegate
Result: Assertion failed: 
    assert 'a'.a == 'a'.a
               | |      |
               | false  aa
               aa