java在不知道实现类的情况下调用接口方法

时间:2013-08-14 13:49:42

标签: java interface frameworks cdi

我正在使用Java编写的库有问题。我在我的库中创建了一个接口,我需要这个lib的用户来实现。从我的库中我称之为实现(为什么不相关)。

起初我正在使用CDI,并将我的界面注入我的lib中的控制类,如此

@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();
}

我的lib的用户负责实现我的接口并实现someFunction方法。我从我的控制器类调用这个函数。如果未初始化对象,则无法调用接口函数。使用CDI,容器找到实现并将其注入我的控制器类中的接口对象,因此它被初始化,我可以调用用户的实现方法。有了SE,我不能做这样的事情......而且由于我不知道实现我的界面是什么,我有点坚持这个。

希望现在更清楚了:)。

1 个答案:

答案 0 :(得分:0)

JDBC怎么样?它有类似的问题。您在运行时提供实现。