15.8 泛型擦除

//总超能力接口
interface SuperPower{}
//X射线超能力
interface XRayVision extends SuperPower{
    void seeThroughWalls();
}
//听力超能力
interface SuperHearing extends SuperPower{
    void hearSubtieNoises();
}
//嗅觉超能力
interface SuperSmell extends SuperPower{
    void trackBySmell();
}

//超人类(超人会包含一种超能力),在这个地方定义成泛型擦除上边界为SuperPower
class SuperHero<POWER extends SuperPower>{
    POWER power;

    SuperHero(POWER power){this.power = power; }

    POWER get(){return power;}
}
//超级侦探继承了超人类,拥有一种X射线的超能力(擦除上边界为x射线)
class SuperSleuth<POWER extends XRayVision> extends  SuperHero<POWER>{
    public SuperSleuth(POWER power) {super(power);}
    void see(){power.seeThroughWalls();}
}

//犬女 扩张擦除上边界为 SuperSmellm,SuperHearing
class CanineHer<POWER extends SuperSmell & SuperHearing> extends SuperHero<POWER>{

    public CanineHer(POWER power) {super(power);}

    void hear(){power.hearSubtieNoises();}
}

//SuperHearing,SuperSmell的实现类
class SuperHearSmell implements SuperHearing,SuperSmell{
    @Override
    public void hearSubtieNoises() {}
    @Override
    public void trackBySmell() {}
}
//实现所有
class SuperAll extends SuperHearSmell implements XRayVision{
    @Override
    public void seeThroughWalls() {}
}
//犬男 实现同样的效果(擦除至SuperSmellm,SuperHearing,XRayVision)
class DogBoy<POWER extends SuperAll> extends CanineHer<POWER> {

    public DogBoy(POWER power) {super(power);}

    public void demo(){
        power.seeThroughWalls();
    }
}
public class EpicBattle {

    //这里有点类似于向上转型,这是安全的
    static <POWER extends SuperHearing> void useSuperHearing(SuperHero<POWER> hero){
        hero.get().hearSubtieNoises();
    }

    static <POWER extends SuperHearSmell> void superFind(SuperHero<POWER> hero){
        hero.get().trackBySmell();
        hero.get().trackBySmell();
    }

    public static void main(String[] args) {
        DogBoy<SuperAll> d = new DogBoy<>(new SuperAll());
        useSuperHearing(d);
        superFind(d);
    }
}

在泛型的继承体系中,泛型的擦除边界时可以被扩展的,不过是只能扩展,不能强行改变,上下边界时对擦除的一种补偿


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值