2013-07-30 12 views
5

Rozważmy następujący fragment -W jaki sposób groovy dodaje nowe metody do klas Java?

println String.class 

wyjście jest -

class java.lang.String 

ja spodziewałem niektóre podklasy String ponieważ zawiera wiele elementów, które nie są częścią klasy Javy. Na przykład -

println String.methods.size() 

methods nie jest członkiem klasy Javy.

Jak działa ta magia?

Odpowiedz

6

Groovy ma rejestr metaclass. Po wywołaniu metody na klasie rejestr jest sprawdzany, aby sprawdzić, czy istnieje metoda rozszerzenia metaClass dla tej instancji klasy.

Od standardowej dokumentacji -

Groovy Każdy obiekt ma metaklasa, który jest używany do zarządzania dynamicznego naturę języka. Ta klasa przechwytuje połączenia z groovy obiektów w celu zapewnienia, że ​​można dodać odpowiednią ciekawość. Source

+0

Tim: Myślę, że powinienem był zadać ci powyższe pytanie do linku - to była twoja odpowiedź. – R71

+0

Wydaje się, że usunęli coś przed 2007 rokiem –

Powiązane problemy