读书笔记-泛型有限通配符

发送一个子类对象给声明了其父类类型的方法,是没问题的;

但是发送一个子类对象List给声明了其父类类型List的方法,是不行的;

这个时候,有限通配符就可以派上用场,在接受方法的声明中:List<? extends E> o;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{      
  Stack<One> stack = new Stack<One>();

  stack.pushSingle(new One());

  stack.pushSingle(new Two());

  List<One> arrayList = new ArrayList<One>();

  stack.push(arrayList);

  //有限通配符的用法

  List<Two> list = new ArrayList<Two>();

  stack.push(list); //The method push(List<One>) in the type Stack<One> is not applicable for the arguments (List<Two>)

  stack.push2(list);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Stack<E> {

public void pushSingle(E o) {

}

public void push(List<E> o) {

}

public void push2(List<? extends E> o) {

}

}

class One {

}

class Two extends One {

}
原文地址:https://www.cnblogs.com/mosthink/p/5288847.html