【发布时间】:2013-08-14 13:49:41
【问题描述】:
我目前使用 Java 编写的库有问题。我在我的库中创建了一个接口,我需要这个库的用户来实现。在我的库中,我正在调用实现(为什么无关紧要)。
起初我使用 CDI,只是像这样将我的接口注入到我的库中的控制类中
@Inject
private Interface interface;
我依靠容器来找到上述 lib 的用户所做的实现。 但我正在考虑切换到 SE,因为使用 Java EE 的限制可能会阻碍某些开发人员。
如您所见,我面临的问题是我无法在不知道实现类的情况下实例化我的接口,并且无法调用实现类中的方法...
关于如何解决这个问题的任何想法? (我有自己的想法,但我想要更好的东西,我没有把它放在这篇文章中,所以你的意见不会受到影响@:))
提前致谢。
编辑: 例子: 这是我的控制器类
public class Controller{
private void InterfaceToImplement interfaceToImplement;
public void something(){
String s = interfaceToImplement.someFunction();
}
}
这是我的界面
public interface {
abstract String someFunction();
}
我的库的用户负责实现我的接口和实现 someFunction 方法。我从我的控制器类中调用这个函数。如果对象未初始化,我无法调用接口函数。使用 CDI,容器找到实现并将其注入到我的控制器类中的接口对象中,因此它被初始化并且我可以调用用户的实现方法。使用 SE 我不能做这样的事情......而且由于我不知道是什么实现了我的接口,所以我有点坚持。
希望现在更清楚:)。
【问题讨论】:
-
我认为我们需要更多的背景信息。
-
@AdamArold 添加了一个例子:)。
-
也许你想看看这里:stackoverflow.com/questions/347248/…
-
OpenWebBeans 和 Weld 都在 Java SE 中工作。启动 CDI 容器还有一些额外的步骤,但没有理由不能使用它。
标签: java interface frameworks cdi