《Java编程思想》如何使用泛型参数窄化接口

2017-09-13 12:24:57来源:CSDN作者:weixin_40134367人点击

分享

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

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;    }}

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

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台