gpt4 book ai didi

java - 扩展和 super 的通用概念

转载 作者:行者123 更新时间:2023-12-02 06:58:51 25 4
gpt4 key购买 nike

通用扩展背后的概念是什么,为什么不允许修改列表;为什么当我向 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,但无法理解这意味着什么。请给我一个详细的解释和例子来理解这一点。

最佳答案

您无法将字符串添加到 List<? extends Object>因为 ?可以是任何东西。

如果您想将事物放入列表中,其类型参数应该是您要放入的类型的父类(super class)。(这包括类型本身。)

如果你想从列表中获取内容,它的类型参数应该是你想要取出的类型的子类。 (这包括类型本身。)

这可以通过缩写 PECS 来记住 - 生产者扩展,消费者 super 。

关于java - 扩展和 super 的通用概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16941913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com