declare XXX
AspectJ では、declare XXX みたいなコードを書ける。AspectJ でサポートされている declare 宣言には、declare parents (既存のクラスに interface をとかを実装させる) とか declare precedence (アスペクトの優先順位を決める)とかがある(詳しくは「The AspectJ Programming Guideを参照。たとえば「Static crosscutting」とか」 。
このような declare XXX みたいな 書き方 は、どのくらい一般的だろうか? 一般的というのは、AspectJ がサポートしているような declare XXX の宣言のほかに、どのような XXX が考えられて、有効なんだろうか?
「XAspects: An Extensible System for Domain Specific Aspect Languages」[1] では、declare strategy とか declare traversal とかの使用例が載っている。
さっき読んだばかりの「The Proxy Inter-Type Declaration」[2] では declare proxy なんかが提案されている。
他にどのような XXX が考えられるだろうか?
まとめると:
- declare XXX みたいな書き方は、どのくらい有効(読みやすい? 分かりやすい? 意味が通じやすい?)?
- どんな種類の declare XXX がある? declare parents と declare proxy の抽象的な違いは何? あるいは同じ?
- 他にどんな declare XXX が考えられる?
リソース:
- [1] Macneil Shonle, Karl Lieberherr and Ankit Shah. XAspects: An Extensible System for Domain Specific Aspect Languages. OOPSLA '2003, Domain-Driven Development Track. (2003)
http://www.ccs.neu.edu/research/demeter/biblio/XAspects.html
- [2] Michael Eichberg. The Proxy Inter-Type Declaration.
http://www.st.informatik.tu-darmstadt.de/public/Publications.jsp