/ / Как Groovy добавя нови методи към Java класове? - groovy

Как Groovy добавя нови методи към Java класове? - groovy

Обърнете внимание на следния фрагмент -

println String.class

Изходът е -

class java.lang.String

Очаквах някакъв подклас на String, тъй като съдържа много членове, които не са част от Java класа. Например -

println String.methods.size()

methods не е член на класа Java.

Как се случва тази магия?

Отговори:

6 за отговор № 1

Groovy има регистър на метаклас. Когато се обаждате на метод от даден клас, регистърът се проверява, за да видите дали съществува метод за разширение metaClass за този клас потребителски модел.

От стандартната документация -

Всеки groovy обект има metaClass, който се използва за управление на динамиката естеството на езика. Този клас прихваща обажданията на груби предмети за да се гарантира, че може да се добави подходящ канал. източник