这一篇文章是关于Java中泛型中重载的问题,我们应该知道,方法的签名包括,参数类型,参数数量,有无返回值,还有方法名称四个条件。其中可能和泛型有关的问题就是参数的类型、返回值这两个。先针对参数的重载,看看下面的代码:
import java.util.*;
public class UseList<W, T>
{
void f(List<T> v){}
void f(List<W> v){}
}
上面的代码被提示错误,因为由于边界擦出的原因,T、W两个参数都被擦除为Object,所以这两个方法其实都是同一个方法,所以这个时候我们应该避免重载,而将两个方法名进行区分,如下所示:
import java.util.*;
public class UseList<W, T>
{
void f1(List<T> v){}
void f2(List<W> v){}
}
下面来尝试一下有关于返回值的重载,代码如下:
import java.util.*;
public class UseList<W, T>
{
W f(){return (W) new Object();}
T f(){return (T) new Object();}
}
这个代码同样不能进行编译,所以我们应该避免用泛型参数进行重载。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。