2014-02-05 75 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();

相關問題