搜索了一阵后,我仍然找不到任何回答我的问题,甚至还有几个相关主题泛型的,所以在这里你去:上的Java泛型约束通配符
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?
为什么最后两行不会编译?特别是最后一行。我对这个主题做了很多测试,但仍然无法理解这个逻辑。
谢谢。
@凯这有助于清楚地回答你的问题。 – asgs 2011-03-21 08:47:51
谢谢,汤姆,这里是我没有得到:为什么这一个编译------ >>> list.add(新的FileNotFoundException(“这是好的。”)); <<< ----我认为FileNotFoundException也低于IOException的边界。但它编译好。 – 2011-03-21 08:52:51
经过一段时间的摘要后,终于明白了:)即使在line1之后,list = new ArrayList(),但是list的元素的基类仍然被限制在满足条件“?super IOException”的类中,换句话说,元素的基类需要至少(或子类)IOException。 –
2011-03-21 09:14:21