当将 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/