我知道以下所有 Java 接口(interface)规则:
- 您不能实例化接口(interface)。
- 接口(interface)不包含任何构造函数。
- 接口(interface)中的所有方法都是抽象的。
- 接口(interface)不能包含实例字段。唯一可以出现在接口(interface)中的字段必须同时声明为静态和最终。
- 接口(interface)不被类扩展;它由一个类实现。
- 一个接口(interface)可以扩展多个接口(interface)。
现在我的问题是我们如何创建接口(interface) EntityManager 的变量并使用它的方法,如下面给定的代码:
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateful
public class Movies {
@PersistenceContext(unitName = "movie-unit")
private EntityManager em; // Here declaring a variable of an Interface
public void addMovie(Movie movie) throws Exception {
em.persist(movie); // Here using variable of an Interface to call its method
}
}
请阐明这一点,以便我可以清楚地理解这段代码是如何工作的!
最佳答案
您在这里没有创建任何东西,容器才是。您所做的只是声明一个要注入(inject)的依赖项,这就是 DI 在 JavaEE 中的工作方式。正在发生的事情的一个非常简单的 View :
您的
电影
EJB 是proxied通过容器代理会反省您的类并发现您声明的注解,以及您声明它的字段
容器向代理提供
EntityManager
的实例,这反过来又使其可用于您的实现。
Presto:即时 EntityManager
。注意到您在这个过程中的参与度有多低?
关于java - 接口(interface)的变量在JAVA中是如何工作的,如何调用接口(interface)的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25063608/