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 № 1Groovy 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