groovyでクロージャの継承はどのように機能しますか?知っておくべき特別なことはありますか?私のアプリケーションは、プラグインコントローラを拡張することです。プラグインコントローラは、アップデートが必要な場合は一人で離れる必要があります。groovyクロージャの継承
4
A
答えて
7
閉鎖継承はそれほど意味がありません(とにかくそれらを使用する傾向があります)。実際にはクロージャはClosure
クラスのインスタンスです。 Closure
のサブクラスを作成した場合、それをサブクラス化できますが、そうではありません。たとえば、コントローラでは、アクションをインラインインスタンスとして定義します。
def list = {
...
}
これら
は、私たちがlist()
を呼び出すことができるという点で、メソッドのように扱われているが、
call()
は
Closure
クラスのインスタンスメソッドであるため、それは、
list.call()
のためだけ糖衣構文です。
Grails 2.0では、コントローラのアクションを作成するための方法として、メソッドを使用する方法がありますが、クロージャは下位互換性のためにサポートされています。この切り替えの主な理由の1つは、オーバーロードとオーバーライドをサポートすることです。インラインクロージャでは不可能です(少なくとも実用的ではありません)。基本クラスインスタンスと同じ名前のサブクラスでクロージャインスタンスを定義できますが、StackOverflowError
関連する問題
- 1. Groovyクロージャが抽象クラスを継承できるか
- 2. C#カスタムイベント、継承とクロージャ
- 3. groovyでクロージャをシリアライズ
- 4. Groovyのクロージャの構文は
- 5. groovyクロージャのインスタンス化変数
- 6. BuildManager継承の継承
- 7. データ継承の継承
- 8. JavaとGroovyの継承と親クラスに基づくスレッドのコンテキスト
- 9. Guiceの、Groovyの、@Canonicalと継承一緒にうまく
- 10. クラス継承とインターフェイス継承
- 11. Groovyの型付きタプルとクロージャ
- 12. GroovyのクロージャDELEGATE_ONLYとDELEGATE_FIRST戦略が
- 13. 継承 - ターゲット固有の継承クラスC#
- 14. Vector :: Vectorの継承継承クラス
- 15. Entity Frameworkとの継承継承
- 16. テンプレートを継承した継承継承メンバ
- 17. groovyでクロージャを渡せません
- 18. CSSが継承しない継承
- 19. 反復子継承と継承* this
- 20. C++多重継承/仮想継承
- 21. 継承する継承するインターフェイス
- 22. 継承したクラスを継承する
- 23. 継承継承について
- 24. Java ORM:複数(継承)継承
- 25. 継承
- 26. 継承
- 27. 継承
- 28. 継承
- 29. 継承
- 30. 継承
バートになるので、
super.list()
を呼び出すことはできません。返信とサポートに感謝します。私はまだSpring Security UIのプラグインと他のものを統合していますし、あなたの答えとさまざまなオプションを消化しているので、あなたの方法で質問を発射しようとするかもしれません。それを楽しみにしていますが、私は現在Grails 2が "私のため"ではないと仮定しています。金融取引を含むウェブサイトの公開/堅牢性の必要性や、 2.0で動作しませんか?)。私は本当にそれがわかりません - ただの大まかな仮定 - まだグラエルの学習曲線を上っているので、どんなコメント/アドバイスも歓迎します。 – Ray2.0はかなり安定しています.2.0最終的に修正された未解決の問題をチェックアウトしてください。しかし、あなたは良い点を作っています - プラグインの中にはまだ更新されていないものがあります。ほとんどがうまくいくはずで、テストで問題が発見されます。 –