2013-07-30 8 views
5

Si consideri il seguente frammento -In che modo Groovy aggiunge nuovi metodi alle classi Java?

println String.class 

L'uscita è -

class java.lang.String 

mi aspettavo un po 'sottoclasse di String in quanto contiene molti membri che non fanno parte della classe Java. Per esempio -

println String.methods.size() 

methods non è un membro della classe Java.

Come si svolge questa magia?

risposta

6

Groovy ha un registro metaclasse. Quando si chiama un metodo su una classe, il registro viene ispezionato per verificare se esiste un metodo di estensione metaClass per tale istanza di classe.

Dalla documentazione standard -

Ogni oggetto ha un groove metaclasse che viene utilizzato per gestire la dinamica natura del linguaggio. Questa classe intercetta le chiamate a oggetti groovy per garantire che sia possibile aggiungere l'eccezionale grooviness. Source

+0

Tim: Penso che dovrei ti ho chiesto la domanda di cui sopra per il collegamento - era la risposta. – R71

+0

Sembra che abbiano cancellato qualcosa prima del 2007 –

Problemi correlati