List<? extends Father> list2 = new ArrayList<>(); 要怎么赋值
时间: 2024-05-12 15:15:22 浏览: 120
List<? extends Father> list2 = new ArrayList<>();
这里的通配符表示这个 List 中的元素可以是 Father 或 Father 的子类,但具体哪个子类是不确定的。
要赋值,可以通过以下方式:
1. 直接将一个已经存在的 List 赋值给 list2:
```
List<Son> sonList = new ArrayList<>();
list2 = sonList; // 此时 list2 中的元素类型将被确定为 Son,因为 sonList 中的元素类型是 Son
```
2. 创建一个新的 List,并将其赋值给 list2:
```
List<Son> sonList = new ArrayList<>();
List<? extends Father> newList = new ArrayList<>(sonList);
list2 = newList; // 此时 list2 中的元素类型将被确定为 Son,因为 newList 中的元素类型是 Son
```
需要注意的是,由于 list2 中的元素类型是不确定的,因此不能直接向其中添加元素,否则会出现编译错误。如果需要添加元素,可以使用 List<? super Son>,这样可以保证 List 中的元素类型是 Son 或者 Son 的父类。
阅读全文