2016-06-01 13 views
1

私はSybexによるJava 8 OCPの本を読んできましたが、なぜ3行目がコンパイルされないのかわかりません。 IOExceptionFileNotFoundExceptionはないながら下位ワイルドカードを使用したJavaジェネリック

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()); 
} 

答えて

1

ExceptionIOExceptionから継承されません。

のでhierarchyは次のとおりです。

Exception 
    IOException 
     FileNotFoundException 

ので、FileNotFoundExceptionIOExceptionですが、Exceptionではありません。

+2

私はこれが質問に答えにくいと感じています。私はここで真の問題は「スーパー」の使用法だと信じています。そして、それでも、[この質問](http://stackoverflow.com/questions/4343202/difference-between-super-t-and-extends-t-in-java)はそれにすごくうまく答えなければなりません。 – Obicere

関連する問題