2012-11-25 9 views
6

grailsプロジェクトのドメインクラスを使っている場合は、getterとsetterを使ってそれらの書き込みや読み取りを行うこともできます。例えば、ドメインクラス帳のgrailsでゲッターとセッターを使うかどうか?

が属性を持っている:

コントローラで
String author 

あなたが本をしたし、この本の著者を設定したい:これは属性またはゲッターに直接アクセスで動作 をし、彼らはクラスにはありませんが、セッターメソッドです。

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

グルーヴィー&のGrailsの属性を取得および設定する好適な方法は何ですか?

答えて

15

これらは同じです。スコープなしのフィールドがString authorの場合、Groovyコンパイラはフィールドを非公開にし、getterとsetterを作成します。しかし、既存のメソッドを上書きすることはないので、独自のセットを定義したり、単に値を設定して取得するだけではありません。

book.author = "Mike Miller"は、セッターを呼び出すためのGroovy構文糖です。ちょうどString authorName = book.authorのように、ゲッターを呼び出すための構文的砂糖です。これを見るには、クラスを編集してsetterまたはgetterを追加し、printlnを追加します。

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

あなたは、生成されたコードを見て逆コンパイラを使用することができます - 私はJD-GUIをお勧めします、http://java.decompiler.free.fr/?q=jdgui

3

を両者が同じコードにまでコンパイルしてから2の間には実際に違いはありません。 のGrailsを使用する利点の1つはゲッターとセッターの定型コードを気にすることないので、それは読みやすさと生産性を向上させて、私は強く以下のコードをお勧めします:

book.author = "Mike Miller"

関連する問題