使用Java泛型接受和接口并返回实现该接口的Class

时间:2014-02-05 18:18:16

标签: java generics ejb

我正在编写一个类来集中我的EJB查找。因此,我将一个接口传递给一个方法,并将其作为EJB查找的基础,然后返回相应类的实例。

我想使用泛型,这样我就不必在调用方法时强制转换结果。

我写了下面的内容,但是我对此感觉不好,我很确定它实际上并没有按我的意愿行事。

public class EJBProvider {

    public static <T> T lookupEjb(Class theClass) {
        try {
            InitialContext ic = new InitialContext();

            String simpleName = String.format("java:comp/env/ejb/%s", theClass.getSimpleName());
            final T ejb = (T)ic.lookup(simpleName);
            return ejb;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}


private MyEjbLocal myEjb = EJBProvider.lookupEjb(MyEjbLocal.class);

1 个答案:

答案 0 :(得分:0)

正如SLaks建议的那样,Class<? extends T>正确地强制执行该类型。

我还整合了GáborBakos使用theClass.cast();

的建议