[英]Generics methods in Java
我的问题是:是否有可能制作一种通用方法,我可以使用2种不同的类型? 例如整数和字符串。
这没有实际用途,但我想知道它是否可行。 如果是的话,怎么样? :)
你不需要为此使用泛型。 您可以重载方法。 例如
public void method(Integer i){}
public void method(String s){}
如果用一个整数调用方法,那么它将调用第一个方法。 如果用字符串调用它,它将调用第二种方法。
大概你的意思是两种不同类型的参数?
您可以对String参数使用一种方法,而另一种方法则使用整数并将其传递给String版本。
示例类型不是好的,因为它们是最终的。 这意味着您不能使用它们来限制泛型参数,因为没有任何东西可以从它们继承。
所以对于那些类型,答案是否定的。
但是我们可以用Java做的是:
您可以创建一个接受对象类型的方法。
public <T> void doStaff(T obj) {
}
您可以创建一个限制为CharSequence的方法,因为String是final
public <T extends CharSequence> void doStaff(T str){
}
您可以创建一个方法,使其更适合一个接口
public <T extends CharSequence & Comparable<T>> void doStaf(T interf) {
}
但即使有这么多可能性,我们也无法创建一个对两个不相关类型有效的泛型参数。 这没有意义。 通用类型的主要任务是提供类型安全。 通常当我们使用它们时,我们应该使用接口而不是类。
如果您希望您的方法接受Integer和String,请尝试以下方法:
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){
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.