2014-02-05 69 views
0

我正在编写一个类来集中我的EJB查找。因此,我将一个接口传递给一个方法,并将其用作EJB查找的基础,然后返回适当类的实例。使用Java泛型接受并返回一个实现该接口的类

我想使用泛型,以便在调用方法时不必施放结果。

我已经写了下面的内容,但是我对它有不好的感觉,而且我很确定它实际上并没有做我想做的事情。

公共类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); 
+3

伽柏Bakos的建议,这应该是一个类'' SLaks

+4

我想,如果你使用theClass.cast(ic.lookup(...)),这将是更安全的。 –

+0

这是一个工厂类,还是仅仅是缓存对象? –

回答

0

作为SLaks表明,Class<? extends T>正确地强制执行的类型。

我还集成使用theClass.cast();

相关问题