在尝试 ExpandMetaClass 时,我遇到了这种行为:
class A {}
A.metaClass.foo = { 0 }
A.metaClass.foo = { 1 }
println (new A().foo())
A.metaClass.foo = { 2 }
println (new A().foo())
Collection.metaClass.foo = { 0 }
Collection.metaClass.foo = { 1 }
println ([].foo())
Collection.metaClass.foo = { 2 }
println ([].foo())
哪个打印
1
2
1
1
这似乎不一致。这种行为背后的原因是什么?