gpt4 book ai didi

java - 为什么不能调用 List 而不是 List 即使 Integer 扩展了 Number?

转载 作者:搜寻专家 更新时间:2023-10-31 08:09:58 24 4
gpt4 key购买 nike

我想知道为什么不能调用 List<Number>不与 List<Integer > 甚至 Integer 是抽象类 Number 的扩展类?有一个逻辑错误,因为我可以用参数 Number 也用 Integer 调用方法。

public class Que
{

public void enterNumbers(List<Number> nummern)
{
for (Number number : nummern)
{
System.out.println(number + "\n");
}
}

public void enterNum(Number num)
{
System.out.println("This is a number " + num);
}

public static void main(String[] args)
{
Que que = new Que();

Integer myInteger = new Integer(7);
// possible (of course!)
que.enterNum(myInteger);

List<Integer> num = new ArrayList<Integer>();
num.add(4);
num.add(45);
Integer inte = new Integer(333);

num.add(inte);
// not possible !
que.enterNumbers(num);
}
}

为了解决这个问题,我可以使用 List<?>List<? extends Number> ...所以我不需要解决方案我想知道确切的原因。

我能想到的唯一解决方案是将 List 与 Number 绑定(bind)为一种新的数据结构类型。

最佳答案

因为你可以,例如添加 Number 的不同子类的实例至 List<Number> ,例如 Double 类型的对象, 但显然你不应该被允许将它们添加到 List<Integer> :

public void myMethod(List<Number> list) {
list.add(new Double(5.5));
}

如果允许您调用 myMethod使用 List<Integer> 的实例当 add 时,这将导致类型冲突被称为。

关于java - 为什么不能调用 List<Number> 而不是 List<Integer> 即使 Integer 扩展了 Number?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18513990/

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