乐趣区

关于java:思java通配符问号

对于通配符?, ? 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 的子类 ”, 那么就可能是老师, 老师 不 ” 是 ” 学生.

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

退出移动版