这段代码:
List<? extends Reader> weirdList;
weirdList.add(new BufferedReader(null));
编译错误为
The method add(capture#1-of ? extends Reader) in the type List is not applicable for the arguments (BufferedReader)
为什么? BufferedReader 扩展了阅读器,那为什么不“匹配”呢?
最佳答案
List<? extends Reader> weirdList
可以引用任何类型的 List
存储任何类型的 Reader
.所以有可能
List<? extends Reader> weirdList1 = new ArrayList<BufferedReader>();
List<? extends Reader> weirdList2 = new ArrayList<FileReader>();
如果 Java 允许您添加 BufferedReader
至 weirdList1
它还必须让您添加 BufferedReader
至 weirdList2
(引用类型相同)自 weirdList2
以来不应该发生应该只存储 FileReader
关于java - <?扩展 > Java 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15775464/