gpt4 book ai didi

java - 接口(interface)的变量在JAVA中是如何工作的,如何调用接口(interface)的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:25 28 4
gpt4 key购买 nike

我知道以下所有 Java 接口(interface)规则:

  1. 您不能实例化接口(interface)。
  2. 接口(interface)不包含任何构造函数。
  3. 接口(interface)中的所有方法都是抽象的。
  4. 接口(interface)不能包含实例字段。唯一可以出现在接口(interface)中的字段必须同时声明为静态和最终。
  5. 接口(interface)不被类扩展;它由一个类实现。
  6. 一个接口(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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com