7

grailsプロジェクトにドメインクラスがある場合は、getterとsetterを使用してそれらを読み書きすることもできます。

たとえば、ドメインクラスBookには次の属性があります。

String author

コントローラで本を持っていて、この本の著者を設定したい:これは、属性への直接アクセス、またはクラスにない場合でもgetterメソッドとsetterメソッドで機能します。

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

GroovyとGrailsで属性を取得および設定するための好ましい方法は何ですか?

4

2 に答える 2

15

それらは同じです。のようなスコープ外のフィールドがあるString author場合、Groovyコンパイラーはフィールドをプライベートにし、そのフィールドのゲッターとセッターを作成します。ただし、既存のメソッドは上書きされないため、独自のセットを定義したり、値を設定して取得するだけではない場合は取得したりできます。

book.author = "Mike Miller"String authorName = book.authorセッターを呼び出すためのGroovyシンタックスシュガーであり、ゲッターを呼び出すためのシンタックスシュガーと同じです。これを確認するには、クラスを編集し、セッターまたはゲッターを追加して、printlnを追加します。

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

逆コンパイラーを使用して、生成されたコードを確認できます-JD-GUI、http://java.decompiler.free.fr/ ?q=jdguiをお勧めします

于 2012-11-25T02:28:11.100 に答える
4

どちらも同じコードにコンパイルされるため、2つの間に実際の違いはありません。グレイルを使用する利点の1つは、ゲッターとセッターのボイラープレートコードについて心配する必要がないことです。したがって、読みやすさと生産性が向上するため、以下のコードを強くお勧めします。

book.author = "Mike Miller"

于 2012-11-26T06:12:13.500 に答える