我的问题是:是否可以制作一种可以使用两种不同类型的通用方法?例如整数和字符串。
这没有实际用途,但我只想知道它是否可能。如果是,如何?:)
您不需要为此使用泛型。您可以重载方法。例如
public void method(Integer i){}
public void method(String s){}
如果您使用整数调用方法,那么它将调用第一个方法。如果你用字符串调用它,它将调用第二种方法。
大概你的意思是两种不同类型的参数?
您可以对 String 参数使用一种方法,而另一种方法则将整数传递给 String 版本。
示例类型不是好的类型,因为它们是最终类型。这意味着您不能使用它们来限制泛型参数,因为没有任何东西可以从它们继承。
因此,对于那种类型,答案是否定的。
但是我们可以用 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) {
}
但即使有如此多的可能性,我们也无法创建对两种不相关类型有效的泛型参数。这是没有意义的。泛型类型的主要任务是提供类型安全。通常,当我们使用它们时,我们应该使用接口而不是类来操作。
如果您希望您的方法接受整数和字符串,请尝试以下方法:
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){
}