请参阅以下代码:
class Car implements GroovyInterceptable{}
car=new Car()
Car.metaClass.hello={println "class Car:hello"}
car.metaClass==Car.metaClass
结果是:
false
所以我的问题是:car.metaClass和Car.metaClass有什么区别?我做了一些搜索,但没有结果。有人可以帮忙吗?
答案 0 :(得分:2)
car.metaClass
适用于名为car
的对象。您可以对其进行修改,但其他Car
个对象
当您修改Car.metaClass
时,这将适用于Car.class
的所有对象(在此新元修改后创建)
class Car implements GroovyInterceptable{}
car=new Car()
Car.metaClass.accelerate {->println "Factory tested. Safe acceleration"}
car.metaClass.accelerate {->println "Owner modified : Random acceleration"}
def anotherCar= new Car();
anotherCar.accelerate()
car.accelerate()
输出
Factory tested. Safe acceleration
Owner modified : Random acceleration