3

我的问题是:是否可以制作一种可以使用两种不同类型的通用方法?例如整数和字符串。

这没有实际用途,但我只想知道它是否可能。如果是,如何?:)

4

4 回答 4

2

您不需要为此使用泛型。您可以重载方法。例如

public void method(Integer i){}

public void method(String s){}

如果您使用整数调用方法,那么它将调用第一个方法。如果你用字符串调用它,它将调用第二种方法。

于 2012-11-08T09:50:13.557 回答
1

大概你的意思是两种不同类型的参数?

您可以对 String 参数使用一种方法,而另一种方法则将整数传递给 String 版本。

于 2012-11-08T09:48:38.643 回答
1

示例类型不是好的类型,因为它们是最终类型。这意味着您不能使用它们来限制泛型参数,因为没有任何东西可以从它们继承。

因此,对于那种类型,答案是否定的。

但是我们可以用 Java 做的是:

您可以创建一个接受 Object 类型的方法。

 public <T> void doStaff(T obj) {

 }

您可以创建一个仅限于 CharSequence 的方法,因为 String 是最终的

 public <T extends CharSequence> void doStaff(T str){ 

 } 

您可以创建一个仅限于一个接口的方法

public <T extends CharSequence & Comparable<T>> void doStaf(T interf) {

}

但即使有如此多的可能性,我们也无法创建对两种不相关类型有效的泛型参数。这是没有意义的。泛型类型的主要任务是提供类型安全。通常,当我们使用它们时,我们应该使用接口而不是类来操作。

于 2012-11-08T09:49:35.073 回答
0

如果您希望您的方法接受整数和字符串,请尝试以下方法:

  public class Test {
public static void main(String[] a)  {
    method(new String(),new Integer("2"));
}
public static <T extends String, U extends Integer> void  method(T t, U u){

}
}

编辑:

如果您希望您的方法采用单个参数,该参数采用 String 或 Integer

尝试这个 :

public static <T extends Comparable<T>> void  method(T t){

}
于 2012-11-08T09:54:25.900 回答