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

标签 java interface frameworks cdi

我在使用 Java 编写的库时遇到问题。我在我的库中创建了一个接口(interface),我需要这个库的用户来实现。在我的库中,我正在调用实现(为什么不相关)。

起初我使用的是 CDI,只是像这样将我的接口(interface)注入(inject)到我的库中的控制类中

@Inject
private Interface interface;

我依靠容器找到了上述库的用户所做的实现。 但我正在考虑切换到 SE,因为使用 Java EE 的限制可能会阻碍某些开发人员。

如您所见,我面临的问题是我无法在不知道实现类的情况下实例化我的接口(interface),也无法调用实现类中的方法...

关于如何解决这个问题的任何想法? (我有自己的想法,但我想要更好的东西,我不会把它放在这篇文章中,所以你的意见不会受到影响@:))

提前致谢。

编辑: 例子: 这是我的 Controller 类

public class Controller{
     private void InterfaceToImplement interfaceToImplement;

     public void something(){
        String s = interfaceToImplement.someFunction();
     }
}

这是我的界面

public interface {
     abstract String someFunction();
}

我的库的用户负责实现我的接口(interface)和实现 someFunction 方法。我从我的 Controller 类调用这个函数。如果对象未初始化,我无法调用接口(interface)函数。使用CDI,容器找到实现并将其注入(inject)到我的 Controller 类中的接口(interface)对象中,因此它被初始化,我可以调用用户的实现方法。使用 SE 我不能做这样的事情......而且因为我不知道是什么在实现我的界面,所以我有点坚持这一点。

希望现在更清楚了:)。

最佳答案

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

关于java 在不知道实现类的情况下调用接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18233595/

相关文章:

java - 用java读取数据并格式化

java - Hibernate 创建名称转义的表

javascript - Django 调试工具栏 - Prototypejs 版本

php - 如何在 PHP 中实现 URL 路由

java - 在传统编程语言上使用不同的数字系统

java - 解决遗留 junit 测试套件中的 java classpath hell

c++ - 模板接口(interface) - 通过引用或值使用

oop - 您如何向非程序员解释接口(interface)和抽象类之间的区别?

java - 获取字符串并将其作为一个类运行

PHP和MVC,多种模型