《Java编程思想》泛型 重载

2017-09-13 12:25:30来源:CSDN作者:weixin_40134367人点击

分享

这一篇文章是关于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();}}

这个代码同样不能进行编译,所以我们应该避免用泛型参数进行重载。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台