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