繁体   English   中英

Java中的泛型方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM