2012-11-25 9 views
6

Se hai una classe dominio in un progetto Grails, puoi anche usare getter e setter per scrivere o leggerli.Usando getter e setter in graal o no?

Per esempio classe di dominio libro ha attributo:

String author 

controller hai un libro e che si desidera impostare l'autore di questo libro: Questo funziona con accesso diretto al attributo o con getter e metodi setter anche se non sono nella classe.

book.author = "Mike Miller" 
book.setAuthor("Mike Miller") 

Qual è il modo preferito di ottenere e impostare gli attributi in Groovy & graal?

risposta

15

Sono uguali. Quando hai un campo senza campo come String author, il compilatore Groovy rende il campo privato e crea un getter e setter per esso. Tuttavia, non sovrascrive i metodi esistenti, quindi puoi definire il tuo set e/o ottenere se è più che impostare e ottenere il valore.

book.author = "Mike Miller" è zucchero sintattico Groovy per chiamare il setter, proprio come String authorName = book.author è zucchero sintattico per chiamare il getter. Per vedere questo, modifica la classe e aggiungi un setter o getter e aggiungi un println, ad es.

void setAuthor(String a) { 
    println "Setting author to '$a', was '$author'" 
    author = a 
} 

È possibile utilizzare un decompilatore per vedere il codice generato - vi consiglio di JD-GUI, http://java.decompiler.free.fr/?q=jdgui

3

Non c'è differenza reale tra i due poiché entrambi compilano verso il basso per lo stesso codice. Uno dei vantaggi di utilizzare graal non doversi preoccupare i getter e setter codice standard, quindi vi consiglierei vivamente il codice qui sotto in quanto migliora la leggibilità e la produttività:

book.author = "Mike Miller"