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

时间:2016-11-15 23:54:51

标签: 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;
}

1 个答案:

答案 0 :(得分:1)

不,抱歉。

问题甚至不是Java的type erasure,而是EJB。

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

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

但是,您可以使用CDI来实现类似的功能。您确定需要EJB吗? (答案可能是肯定的,所以不要重构所有内容以使用CDI!)