2013-07-09 24 views
2

我正在尋找是否可能不使這個在Java 7中:選擇基於參數與Java收益類類型7

現在,我有這樣的功能,像這樣的一些服務,其中第三個參數會diffent在每一個:

final RequestDTO1 requestDTO = (RequestDTO1) getDTO(param, RequestDTO1.class); 

final RequestDTO2 requestDTO = (RequestDTO2) getDTO(param, RequestDTO2.class); 

final RequestDTO3 requestDTO = (RequestDTO3) getDTO(param, RequestDTO3.class); 

這是getDTO簽名:

protected Object getMessage(Object param, Class clazz); 

有指示getDTO功能的一些辦法,我想返回CLA的對象ss由第三個參數表示而不使用鑄件?

final RequestDTO1 requestDTO = getDTO(param, RequestDTO1.class); 

final RequestDTO2 requestDTO = getDTO(param, RequestDTO2.class); 

final RequestDTO3 requestDTO = getDTO(param, RequestDTO3.class); 
+0

可以修改'getDTO()'方法(尤其是它的簽名)? –

+0

鑄造有什麼問題? –

+1

@BhavikShah類型安全 – Puce

回答

5

您可以指定方法泛型(注意這是獨立於類generification - 它是在一個方法級別上進行),並返回泛型類型是這樣的:

protected <T> T getMessage(Object param, Class<T> clazz); 

有關更多信息,請參閱Java教程中的Generic methods部分。

1

試試這個

protected <T> T getMessage(Object param, Class<T> clazz); 
1

嘗試:

protected <T> T getMessage(Object param, Class<T> clazz);