Groovy > 便利なアノテーション
更新日
2019-07-28
広告
ToString
クラス定義の際に、ToStringアノテーションを追加すると、自動的にtoStringメソッドをオーバーライドしてくれます。単純なtoStringメソッドでよければ、アノテーションを宣言するだけで済みます。import groovy.transform.ToString @ToString(includeNames=true) class HogeClass { : : }
上の例では、includeNameパラメータにtrueを設定しています。こうすると、クラスのプロパティもtoStringメソッドにより出力してくれます。
@ToStringアノテーションを、相互参照関係にあるクラスで使うと、toStringメソッドがループして、StackOverFlowが発生する場合があります。 例えば、以下のような実装をすると発生します。
import groovy.transform.ToString @ToString(includeNames=true) class Foo { Bar bar } @ToString(includeNames=true) class Bar { Foo foo }FooクラスとBarクラスで、お互いを参照しています。 この状況でToStringアノテーションを使うと、StackOverFlow例外が発生します。 これを回避するためには、どちらかのクラスで、ToStringの対象から除外するための excludes 宣言をする必要があります。
import groovy.transform.ToString @ToString(includeNames=true) class Foo { Bar bar } @ToString(includeNames=true, excludes="foo") class Bar { Foo foo }こうすると、Barクラスのほうでは、変数fooを、ToStringの対象から除外します。 これでループを回避できます。
広告
お問い合わせは sweng.tips@gmail.com まで。