2010-04-28 120 views
3

我有一個convert方法,它將一個String和一個類作爲參數並構造給定類的一個對象,該對象將被返回。如何使參數類型的方法dependend的泛型返回類型?

的使用應該是這樣的

Something s = Converter.convert("...", Something.class) 

是否有可能與Java泛型來表達呢?

+0

您*可*從[this](http://balusc.blogspot.com/2007/08/generic-object-converter.html)獲得一些新的見解。 – BalusC 2010-04-28 15:01:02

回答

7

這將是:

Class<T> 

public static <T> T convert(String source, Class<T> tClass) 
+1

+1以降低參數。 – BalusC 2010-04-28 14:52:20

+0

沒有爲我工作。我修改了我的問題。 – deamon 2010-04-28 15:02:52

+1

@deamon:它是帶有大寫字母的'Class',而不是'Class'。再次檢查Bozho的答案。 – BalusC 2010-04-28 15:03:54

1

你可以這樣做:

public class Main { 

public static void main(String[] args) throws Exception { 

    String s = convert(new String(), String.class); 
} 

private static <T>T convert(String string, Class<T> class1) { 
    // TODO Auto-generated method stub 
    return (T) new String(); 
} 
} 

編輯:在你的方法參數它不是類的類 同時返回你應該把它投到T回報,就像

 return (T) mapper.readValue(json, target); 
+1

在英語中,它是「你」,而不是「你」。此外,代碼塊將被縮進4個空格。您可以選擇代碼,然後按下'010101'按鈕或'Ctrl + K'來縮進。另請參閱右欄中的消息格式規則。 – BalusC 2010-04-28 14:53:49

+0

@GK我用正確的縮進格式化,沒有必要替換我的編輯:) – Bozho 2010-04-28 14:55:05

+0

@BalusC感謝您的建議。我不知道如何格式化。 @Bozho謝謝。 – GuruKulki 2010-04-28 14:57:51