对于通配符?, ? extend People, ? super People,
了解:往这些泛型对象上赋值时,能够传范畴内的任意类型, 然而取出来时, 接管的类型,得是 范畴的最大值. 其实是一种"是"的关系, 等号左边 肯定"是"右边.例如

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

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

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

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