学习文章:https://rengwuxian.com/169.html
笔记
先定义三个类,用于辅助说明,其继承关系如下:
class Grandfather {}
class Father extends Grandfather {}
class Son extends Father {}
关于「协变」,即指的是子类的范型类型(比如 Son
是 Father
的子类,拿着子类 Son
去声明范型类型 ArrayList<Son>
),也属于范型类型的子类(即 ArrayList<Son>
也属于 ArrayList<Father>
的子类 )。
关于「逆变」,即指的是父类的范型类型(比如 Grandfather
是 Father
的父类,拿着父类 Grandfather
去声明范型类型 ArrayList<Grandfather>
),也属于范型类型的父类(即 ArrayList<Grandfather>
也属于 ArrayList<Father>
的父类 )。