icn*_*icn 0 java generics list
我对java泛型有点困惑
这是代码
class Base{}
class Derived extends Base{}
Run Code Online (Sandbox Code Playgroud)
我们可以实例化这样的列表
List<? extends Base> list = new ArrayList<Base>();
Run Code Online (Sandbox Code Playgroud)
为什么我不能添加这样的新项目
list.add(new Base());
Run Code Online (Sandbox Code Playgroud)
所以用户不能使用"添加"方法作为通配符?在遗传学类型?
谢谢
PECS - 生产商扩展,消费者超级.
如果替换extends为super,则可以添加new Base().
List<? extends Base>表示"保存Base(或其Base自身)的任何子类的实例的列表.但它不能保存两个不同子类的实例.
如果你希望你的列表来保存Base和Derived,然后使用List<Base>.但请注意,它无法在以后投射到List<Derived>
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |