class A { String methodFromA() { 'A' } }
class B { String methodFromB() { 'B' } }
A.metaClass.mixin B
def o = new A()
assert o.methodFromA() == 'A'
assert o.methodFromB() == 'B'
assert o instanceof A
assert !(o instanceof B)
println A
println A.toString()
JavaPojo.metaClass.mixin( B)
def javaPojo=new JavaPojo()
println javaPojo
println javaPojo.toString()
结果:
class com.xxx.A
class com.xxx.B
toString from Java
com.xxx.B@5c1a1ff9
为什么line3来自java? 为什么line4是一个ints toString(以hashcode结尾)
这是我的环境
➜~groovy--version Groovy版本:2.4.7 JVM:1.7.0_25供应商:Oracle Corporation操作系统:Mac OS X
➜~java-version java版“1.7.0_25” Java(TM)SE运行时环境(版本1.7.0_25-b15) Java HotSpot(TM)64位服务器VM(内置23.25-b01,混合模式)