在 Groovy 中,实例的元类与其 class 的元类有什么区别
In Groovy what's the difference between an instance's metaClass and its class's metaClass
见以下代码:
class Car implements GroovyInterceptable{}
car=new Car()
Car.metaClass.hello={println "class Car:hello"}
car.metaClass==Car.metaClass
结果是:
false
所以我的问题是:car.metaClass 和 Car.metaClass 有什么区别?我做了一些搜索,但没有结果。有人可以帮忙吗?
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
见以下代码:
class Car implements GroovyInterceptable{}
car=new Car()
Car.metaClass.hello={println "class Car:hello"}
car.metaClass==Car.metaClass
结果是:
false
所以我的问题是:car.metaClass 和 Car.metaClass 有什么区别?我做了一些搜索,但没有结果。有人可以帮忙吗?
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