class A {
def test() { println "parent" }
}
@Mixin(A)
class B {
def test() { println "child" }
}
new B().test() // prints "parent", but I am expecting it to print "child"
これはある種の逆継承のように見えます。
ミックスインは、新しいメソッドを定義する手段としてのみ使用されますか?
もちろん、従来の継承を使用して拡張を使用することもできますが、このユースケースでは、各ドメインに固有のフォーム実装があり、アプリケーションコントローラーでフォームリクエストをキャッチしてMyUniqueDomainForm.mixinDefaultFormMethodsを実行するフォームビルダーが必要です。 (したがって、必要な場合にのみデフォルトのメソッドを定義する必要があり、各フォームクラスにmy.package.app.DefaultFormMethodsをインポートする必要はありません)