2017-03-09 84 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

相关问题