gpt4 book ai didi

java - 为什么 List newList = new ArrayList() 违反类型安全?

转载 作者:行者123 更新时间:2023-12-01 18:56:12 25 4
gpt4 key购买 nike

Possible Duplicate:
Is `List<Dog>` a subclass of `List<Animal>`? Why aren’t Java’s generics implicitly polymorphic?

我已经声明了这些类:

class Cereal{}

还有:

public class Flakes extends Cereal{
public static void main(String[] args) {
List<Cereal> newList = new ArrayList<Flakes>();
}
}

但是当我尝试编译这些Java源代码时,出现了这个编译错误:

Type mismatch: cannot convert from ArrayList<Flakes> to List<Cereal>

我的问题是:为什么不可能进行转换?是否违反了类型安全规则?或者?

预先感谢您的回复。

最佳答案

因为除非定义,否则类型是严格的。您想尝试以下:

     List<? extends Cereal> newList = new ArrayList<Flakes>();

这意味着它的列表对象扩展了Cereal,因此上面的语句变得有效。

关于java - 为什么 List<SuperClassType> newList = new ArrayList<SubClassType>() 违反类型安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13868667/

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