《Java编程思想》泛型 重载

来源:互联网 发布:苏州高博java培训 编辑:程序博客网 时间:2024/06/10 12:04

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

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

原创粉丝点击