2017-03-09 38 views
-2

而不是使用重載我想用單一的方法與一般數據類型一樣,我們可以使用方法參數的泛型在Java

public void setValues(T key, T value){ 
    if(key instanceof Integer){ 
     //code 
    }elseif(key instanceof String){ 
     //code 
    }else{ 
    //code 
    } 
} 

有什麼辦法來實現這一目標。

+2

可以,但不要你看怎麼樣難道你的方法變成了? – Kayaman

+0

這裏你不需要泛型,只需使用'Object'作爲參數。 –

+0

您可以但需要聲明該方法爲通用:'public void setValues(T key,T value)'。但我同意以前的評論者:在你描述的情況下,這是不合理的。 –

回答

0

您可以定義類型T在你的方法

所以,你想通用的任何方法,你有這樣的

public void <T> someMethod (T arg)

+2

謝謝你@ÉricRoberge這正是我想要的 –

+0

@VikasYadav接受答案,如果它解決了你的問題 – Mistalis

1
根據您的問題

的簽名我寫了一個小的應用程序。它編譯,運行併產生預期的輸出,但我完全摸不着頭腦它是如何工作的:

public class Ff { 
    public static <T> void setValue(T key, T value) 
    { 
     key=value; 
     System.out.println(key); 
    } 
    public static void main(String[] args) { 
     setValue(1L,"hello"); 
    } 
} 

輸出:

你好

+1

類型T是對象在這裏,這就是它的工作原理 –

+1

更具體而不是強迫兩個T's是相同的類型你可能會期望,'T'被選擇爲足夠寬以使兩個參數都被接受。 – Kayaman

相關問題