Java:调用接口而不分配实现

时间:2014-05-18 06:25:38

标签: java interface implementation

是否可以使用Java中的接口与JVM决定哪个实现负责对其进行调用?

我的意思是

public class MyClass{
    private MyModelInterface myModel;

    public void doSmoething(){
        myModel.calculate();
    }
}

或者我必须每次都传递对接口(-variable)的实现的引用

public class MyClass{
    private MyModelInterface myModel;

    public MyClass(MyModel myModel){
        this.myModel=myModel;}

    public void doSmoething(){
        myModel.calculate();
    }
}

eclipse编译器在前一个示例中没有显示任何错误,但是当我尝试将鼠标侦听器或观察者分配给模型视图和控制器之间的此类接口时,JVM给出了空指针异常。我不确定这是否是我程序中的异常或多线程的来源。

2 个答案:

答案 0 :(得分:0)

实施需要以某种方式提供。

但是关于使用哪种实现的决定可以使用"直接注入"推迟到运行时。

我建议你阅读并了解Spring Core。

答案 1 :(得分:0)

不,你总是要传递一个实现接口的类的实例。 JVM无法神奇地决定calculate()方法应该做什么。