【发布时间】:2011-01-05 23:35:08
【问题描述】:
我明白为什么我不能执行以下操作:
private class Parent {
};
private class Child extends Parent {
};
private class GrandChild extends Child {
};
public void wontCompile(List<? extends Parent> genericList, Child itemToAdd) {
genericList.add(itemToAdd);
}
我的问题是有任何实用的方法来拥有一个类型安全的列表,您可以在其中调用 add(E),其中已知 E 只是父级或子级?
我依稀记得“|”的一些用法用于通配符边界的运算符,但我在规范中找不到它...
谢谢!
【问题讨论】:
-
en.wikipedia.org/wiki/Liskov_substitution_principle 说你不应该/不需要这样做。