Android开发经验谈Android开发Android技术知识

Kotlin学习笔记之 10 泛型

2019-03-27  本文已影响11人  super_shanks

10.Kotlin 泛型

我们回头再来看Consumer的接口的三个实现。

//所有事物都吃
class FoodConsumer : Consumer<Food> {
      override fun consume(item: Food) {
      }
  }
  
  //所有快餐都吃
  class FastFoodConsumer : Consumer<FastFood> {
      override fun consume(item: FastFood) {
      }
  }
  
  //所有汉堡都吃
  class BurgerConsumer : Consumer<Burger> {
      override fun consume(item: Burger) {
      }
  }

首先,各自对应生成自己的Consumer<?>肯定是没有问题的,这里我们代码就不写了,我们直接看两个封顶首先是Food,发现一上来就编译出错了

 val consumer1 : Consumer<Food> = FoodConsumer()
  val consumer2 : Consumer<Food> = FastFoodConsumer()   //报错
  val consumer3 : Consumer<Food> = BurgerConsumer()   //报错

如何解释,所有食物都吃的人,肯定是吃Food的。所以第一个没问题。只吃快餐的人FastFoodConsumer,并不一定吃所有的Food,只吃汉堡的人BurgerConsumer就更不用说了。那么可想而知,反过来应该是都通过了。

 val consumer1 : Consumer<Burger> = FoodConsumer()
  val consumer2 : Consumer<Burger> = FastFoodConsumer()
  val consumer3 : Consumer<Burger> = BurgerConsumer()

OK,至此,我们故事讲完了,开始强化理解。

上一篇 下一篇

猜你喜欢

热点阅读