【问题标题】:Can we use generics for method arguments in java我们可以在java中使用泛型作为方法参数吗
【发布时间】:2017-03-09 12:22:18
【问题描述】:

我不想使用重载,而是使用具有通用数据类型的单一方法,例如,

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

有什么办法可以做到这一点。

【问题讨论】:

  • 你可以,但你没看到你的方法变得多么丑陋吗?
  • 这里不需要泛型,使用Object作为参数即可。
  • 您可以但需要将该方法声明为泛型:public <T> void setValues(T key, T value)。但我同意以前的评论者:在你描述的情况下这是不合理的。
  • @Kayaman 对于不同的数据类型,我们有多种具有相同功能的方法,这就是我在单一方法中协作它的原因。
  • @JornVernee 是的,我本可以使用 Object,但想让它通用

标签: java generics overloading


【解决方案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");
    }
}

输出:

你好

【讨论】:

  • 更具体地说,不是强制Ts 为您所期望的相同类型,而是选择T 足够宽以便接受这两个参数。
【解决方案2】:

您在方法中定义类型 T

所以任何你想要通用的方法都有这样的签名

public void &lt;T&gt; someMethod (T arg)

【讨论】:

  • 谢谢@ÉricRoberge 这正是我想要的
  • @VikasYadav 如果解决了您的问题,请接受答案
猜你喜欢
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多