Я изучаю Groovy, и у меня есть вопрос относительно его возможностей метапрограммирования. Из того, что я понимаю, каждый объект в groovy реализует интерфейс groovy.lang.GroovyObject (неявно добавляемый компилятором groovy). Последний интерфейс содержит метод getMetaClass (), поэтому я могу сделать следующее:
class MyGroovyClass{
}
def myGroovyClass = new MyGroovyClass();
println myGroovyClass.metaClass.name
Я не понимаю, как объекты, скомпилированные Java-компилятором, таким как java.lang.String, получают свойство metaClass. Определяется ли это свойство в самом объекте MetaClass, который связывается с java-классами через MetaClassRegistry?