Подстановочный знак верхней границы в Java Generics

после некоторого поиска я все еще не смог найти ответа на свой вопрос, даже если есть пара тем, связанных с Generics, так что вперед:

ArrayList<? super IOException> list = new ArrayList<Exception>();
list.add(new FileNotFoundException("this is ok."));
list.add(new IOException("This is ok"));
list.add(new ClassCastException("compile err"));//why compile err?
list.add(new Exception("compile err"));//why compile err? 

Почему последние два строка не компилируется? Особенно последняя строчка. Я' Я провел довольно много тестов по этой теме, но так и не смог уловить логику.

Спасибо.

5
задан Heisenbug 21 March 2011 в 08:54
поделиться