Java中使用泛型宅化接口

如何在接口中引用泛型参数

public class ComparablePet implements Comparable<ComparablePet>
//使用了泛型参数对接口进行了窄化,导致子类无法重置同一接口
{
    public int compareTo(ComparablePet arg)
    {
        return 0;
    }
}
class Hamster extends ComparablePet implements Comparable<ComparablePet>
//实现同一泛型参数的接口是允许的,可以理解为Comparable已经确定了ComparablePet作为其唯一的类型参数
{
    public int compareTo(ComparablePet arg)
    {
        return 0;
    }
}
class Gecko extends ComparablePet
//甚至不继承接口也是可行的
{
    public int comparableTo(ComparablePet arg)
    {
        return 0;
    }
}

在看看下面的报错

class Cat extends ComparablePet implements Comparable<Cat>
//报错,因为Cat类试图重置新的接口类型
{
    public int compareTo(Cat arg)
    {
        return 0;
    }
}
class Dog extends ComparablePet implements Comparable
//报错,因为Cat类试图重置新的接口类型
{
    public int compareTo(Cat arg)
    {
        return 0;
    }
}

可以看到尝试继承同一个接口的不同泛型参数会导致错误,因为不允许继承同一个接口的不同泛型参数,下面的代码表示,即使不带参数,也是不允许的,因为这也相当于在重写之前继承的接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值