Java中的泛型与重载

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值