Обърнете внимание на следния фрагмент -
println String.class
Изходът е -
class java.lang.String
Очаквах някакъв подклас на String, тъй като съдържа много членове, които не са част от Java класа. Например -
println String.methods.size()
methods
не е член на класа Java.
Как се случва тази магия?
Отговори:
6 за отговор № 1Groovy има регистър на метаклас. Когато се обаждате на метод от даден клас, регистърът се проверява, за да видите дали съществува метод за разширение metaClass за този клас потребителски модел.
От стандартната документация -
Всеки groovy обект има metaClass, който се използва за управление на динамиката естеството на езика. Този клас прихваща обажданията на груби предмети за да се гарантира, че може да се добави подходящ канал. източник