【发布时间】:2013-06-05 13:57:24
【问题描述】:
通用扩展背后的概念是什么,为什么不允许修改 列表;为什么当我将字符串添加到 list 时会引发编译时错误,因为 String 扩展了 Object 并且应该是合法的。
如果这给出了编译错误,那么创建的那个列表有什么用。
List<? extends Object> ls=new ArrayList<String>();
ls.add("asd"); // compilation error
并且在super的情况下编译。
List<? super Integer> ls1=new ArrayList<Object>();
ls1.add(1);
我已阅读 Kathy Sierra 和 Javadoc,但无法理解这意味着什么。请给我一个详细的解释和例子来理解这一点。
【问题讨论】:
-
我已经读过,这并不能解释为什么在 super 而不是在 extends 上允许 add 方法。
-
如果您阅读了答案,它确实可以解释。
-
hmm 在运行时任何对象都可以出现,那么 super 是如何工作的,我无法理解:/