java - 是否可以将 EJB 与具有泛型类型绑定(bind)的类一起使用?

标签 java ejb

当将 EJB 与下面的泛型类一起使用时,是否会为每个泛型类型创建多个 EJB?如果没有,它实际上是如何工作的(如果有的话)?

提前致谢。

@Stateless(mappedName="blah")
public class Blah<T>  {
    public void doSomething(T obj) {
        List<T> list = new ArrayList<T>();
        list.add(obj);
        return list;
    }
}

public class BlahUser1 {
    @EJB
    private Blah<Integer> blah;
}

public class BlahUser2 {
    @EJB
    private Blah<String> blah;
}

最佳答案

不,抱歉。

问题甚至不在于 Java 的 type erasure ,但是 EJB。

@Stateless注释通常会创建一个实例池(技术上取决于应用程序服务器)并保存它们以供将来出于性能原因使用。应用程序服务器将使用 new创建 Blah 的几个实例并进行必要的注入(inject)。

但在你的情况下它不能这样做,因为 Blah<T>未完全指定。

但是,您可以使用 CDI实现与此类似的目标。您确定需要 EJB 吗? (答案可能是肯定的,所以不要重构一切来使用 CDI!)

关于java - 是否可以将 EJB 与具有泛型类型绑定(bind)的类一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40621813/

相关文章:

java - 在非 Eclipse 环境中使用 Eclipse JDT SDK 生成 AST 时出现异常

java - 使用 mockito 将模拟注入(inject)抽象类

java - 在 JBoss 7.1.1 中使用 EJB 3.1 调用 Struts 2 Action 时获得 Struts 报告

java - session Bean 上的 Equals 方法

java - 为什么 EJB 是线程安全的而 servlet 不是?

Java:如何从 maven 故障安全插件访问元文件信息?

java - 通过按钮使imageView可见和不可见

java - 通过线程名称或线程组名称终止线程 - Java

java - 未知实体bean类: null,请验证该类是否已使用@Entity注释进行标记

java - 查看 Java 程序的 native 汇编代码——在 Windows 中最简单的方法是什么?