下载通配符的Java泛型

Java Generics With Lower Bound Wildcard

本问题已经有最佳答案,请猛点这里访问。

我一直在阅读Sybex的Java 8 OCP书,我似乎不明白为什么第三行不能编译。

1
2
3
4
5
6
public static void main(String[] args) {
    List<? super IOException> exceptions = new ArrayList<Exception>();
     exceptions.add(new Exception()); // DOES NOT COMPILE
     exceptions.add(new IOException());
     exceptions.add(new FileNotFoundException());
}

Exception不从IOException继承,IOExceptionFileNotFoundException继承。

所以层次结构是:

因此,FileNotFoundExceptionIOException,但Exception不是。