/ / W jaki sposób groovy dodaje nowe metody do klas Java? - groovy

W jaki sposób groovy dodaje nowe metody do klas Java? - groovy

Rozważ następujący fragment kodu -

println String.class

Wyjście jest -

class java.lang.String

Spodziewałem się pewnej podklasy String, ponieważ zawiera ona wiele elementów, które nie są częścią klasy Java. Na przykład -

println String.methods.size()

methods nie jest członkiem klasy Java.

Jak ta magia się dzieje?

Odpowiedzi:

6 dla odpowiedzi № 1

Groovy ma rejestr metaklasy. Po wywołaniu metody w klasie rejestr jest sprawdzany, aby sprawdzić, czy istnieje metoda rozszerzenia metaClass dla tego wystąpienia klasy.

Ze standardowej dokumentacji -

Każdy groovy obiekt ma metaClass, która służy do zarządzania dynamiką charakter języka. Ta klasa przechwytuje wywołania groovy obiektów w celu zapewnienia, że ​​można dodać odpowiednią rowkowość. Źródło