我试图使用Spring框架为类(让我们称之为C)动态地实现一个特定的接口(让我们称之为I)。在Spring中,这被称为介绍(其他语言中的混合语言)。在编译时,C不实现I。使用@DeclareParents注释,我可以使用AspectJ语法来实现它。
问题是I的实际实现(让我们称之为IImpl)是独立的(不依赖于上下文)--我应该只在注释中提供IImpl类名。我想要实现的是以某种方式规定的执行。例如,我想为IImpl实例提供一个参数,比如封闭的C实例,这样IImpl中的逻辑将根据我引入的C实例的不同而有所不同。我需要一些方法来设置IImpl实例和引入的C实例之间的依赖关系。
目前我找不到办法去做。有什么想法吗?
谢谢。
发布于 2009-02-23 12:00:57
恐怕您正在寻找的解决方案的“表单”是不可能的,因为AJ字节码编织器(编译或加载时间无关紧要)需要知道如何‘实现’您的方法。但是,我认为你的问题可能有一个代表的形式的解决办法。基本上,您将告诉C使用IImpl实现接口I,并使用IImpl作为委托器,这意味着IImpl将将所有方法调用委托给可以在运行时配置/更改的IRuntimeImpl。IImpl基本上是:
public class IImpl implements I {
private I delegate;
public void interfaceMethod() {
delegate.interfaceMethod()
}
}在运行时,您可以将您为我选择的任何运行时实现传递给IImpl。
./alex
https://stackoverflow.com/questions/577382
复制相似问题