请参阅下列代码:
class Car implements GroovyInterceptable{}
car=new Car()
Car.metaClass.hello={println "class Car:hello"}
car.metaClass==Car.metaClass结果是:
false所以我的问题是: Car.metaClass和car.metaClass有什么区别?我做了些搜索,但没有结果。有人能帮上忙吗?
发布于 2015-12-14 05:18:16
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 accelerationhttps://stackoverflow.com/questions/34259621
复制相似问题