我正在编写一个类来集中我的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);
答案 0 :(得分:0)
正如SLaks建议的那样,Class<? extends T>
正确地强制执行该类型。
我还整合了GáborBakos使用theClass.cast();