【发布时间】:2018-01-06 08:24:22
【问题描述】:
我有以下脚本:
task myTask {}
class Person {
Person() {
Person instance = this
println this.metaClass.class.name
println this.getMetaClass().class.name
println instance.metaClass.class.name
println instance.getMetaClass().class.name
}
}
Person person = new Person()
输出是:
groovy.lang.MetaClassImpl
groovy.lang.MetaClassImpl
org.codehaus.groovy.runtime.HandleMetaClass
org.codehaus.groovy.runtime.HandleMetaClass
谁能给我解释一下这是怎么回事?
提前致谢。
【问题讨论】:
-
您是否难以理解
this.和instance.或metaClass和getMetaClass之间的区别? -
我检查了那个帖子,这个帖子是矛盾的!为什么 instance.metaClass 也不同于 this.getMetaClass() ?
-
这篇文章完美地解释了这一点:stackoverflow.com/questions/5340189/…
instance基本上是与this不同的元类。这是 org.codehaus 的版本。 -
我会检查的,谢谢。
标签: gradle groovy this metaprogramming metaclass