思java通配符-问号

关于通配符?, ? extend People, ? super People,
理解:往这些泛型对象上赋值时,可以传范围内的任意类型, 但是取出来时, 接收的类型,得是 范围的最大值. 其实是一种"是"的关系, 等号右边 一定"是"左边.例如

List<? extends People> obj = new List();

因为Student 一定"是" "? extends People", 所以这么弄没问题
People peo = obj.get(0);这里, 右边不论get出什么都是People的子类, 那么"people的子类" 一定 "是"People, 不论什么样的人都是人, 逻辑没错,所以这么写没问题.

Studnet stu = obj.get(0);
这里就不一定了,因为右边是"任意People的子类",那么就可能是老师,老师 不"是"学生.

方法调用的时候, 实际上是, 把实参赋值给形参, 就是 形参 = 实参; 那么参照右边 "是"左边的逻辑即可分析.

你可能感兴趣的:(java泛型)