泛型类多态?协变逆变?

在实现行为模式时,用继承和多态搞定是没问题,可在尝试使用泛型化的类来实现时,遇到了一些问题,自己也去看了协变逆变相关的知识,发现还是无法理解,特来向各位园友请求赐教,谢谢!

想达成的效果是,定义一个泛型基类集合,然后添加此泛型基类派生出来的子类至集合中,并在循环中调用基类的方法。可是,遇到了一些问题,是泛型参数不支持继承?

Car<IBrand>或ICar<IBrand> 并不能接受子类Car<Bmw> 的赋值, 看上去好像不仅仅像是协变逆变方面的问题,或是我哪里理解有误,不解中……

https://img2.mukewang.com/5b7a703b00018fbf07270858.jpg

富国沪深
浏览 713回答 1
1回答

隔江千里

逆变协变这个你换个思路来看协变,从具体往抽象(从派生类往父类变动)逆变,从抽象往具体(同上相反)从关键字看协变 out (直接可以看成返回)逆变 in&nbsp; (直接可以看为入参)你写的代码的问题有两个1.这里是协变(out)2.class级别是不支持逆变和协变的(隐式支持协变,但这个是另一个话题了),所以你这边不可能直接从Car<T>中鼓捣出个类似于Cat<out T>的玩意出来,所以你第一行是没办法了
打开App,查看更多内容
随时随地看视频慕课网APP