gpt4 book ai didi

java - 通配符捕获/泛型

转载 作者:行者123 更新时间:2023-12-02 06:43:27 26 4
gpt4 key购买 nike

考虑

class MyClass{
List<? extends Number> nums= new ArrayList<Integer>();
nums.add(3.14);//Compile error
}

在错误的描述中,我们有:排除了 add(int, Object),找到了 add(int,CAP#1)CAP#1 的定义是什么?为什么会出现这个错误?

最佳答案

这是因为 nums 是 List<? extends Number> ,因此编译器知道它是 Number 的 List 或 Number 的某个子类,但不知道是哪一个。因此,您永远不会被允许向此类列表添加任何内容。以下是其含义的示例:

List<? extends Number> nums=  new ArrayList<Integer>();

List<? extends Number> nums=  new ArrayList<Double>();

都是有效的赋值。但是,如果您这样做:

nums.add(new Integer(4));

编译器不会接受这个,因为它不能确定 nums 是 Integer 的列表。 。

关于java - 通配符捕获/泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18886335/

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