是否有可能确定哪些方面挂钩到给定的类并获得对其实例的访问?
就像是:
Foo foo = new Foo(); List<Object> aspects = getAllAspectsOf(foo);
解决方法
首先,您很可能无法使用现有的Aspect API进行任何此类监视,因为Aspect包装器拦截了调用,其特定目的是将NOT绑定到任何一个特定组件,因此没有任何自然的方法来检测拦截方面.
也就是说 – 可能有一种方法可以将方面包含在某种策略类中,但是,维护它的工作量非常大.
http://www.eclipse.org/aspectj/doc/released/faq.php#q:benefits
方面通常被描述为“在您的其他代码之上”或“编织”,即在运行时或构建时.
因此,鉴于这种方面实现的范例,您的代码通常不会“意识到”任何此类面向方面的特性.
但是,如果您想要可跟踪的方面,您可以使用标准的java和依赖注入实现一些Aspect“like”功能 – 也就是说,通过在运行时加载注入的模块来实现一个方面将实现的一些交叉功能……但是,我怀疑,如果你真的在做严肃的面向方面的代码,那么这种方法将达不到你的面向方面的要求.