gpt4 book ai didi

java - 泛型和赋值问题

转载 作者:搜寻专家 更新时间:2023-11-01 01:27:09 24 4
gpt4 key购买 nike

我知道,每个泛型类型变量都被替换为在方法“类型参数部分”开头的泛型定义中确定的上限。

这是来自Deitel的书

Actually, all type parameters are replaced with the so-called upper bound of the type parameter, which is specified in the type-parameter section.

据此,此子代码必须为真

public  static <E extends Number> void A(  )
{

E x= new Double(2.2);

}

但编译器告诉我 E x= new Double(2.2); 中存在编译错误,尽管这一定是真的,因为 double 是数字

我知道如何通过转换处理和解决一般的问题,但我想问为什么会这样?

最佳答案

仅仅因为 E 是一个数字并不意味着它是一个 Double

可以这样想,如果 E 是一个整数会怎样。 E 仍然是一个数字,但现在您要将一个 double 分配给一个整数。所以类型转换行为是一致的,Number可以是各种不同的类型,E 也可以。

Op 编辑:Deitel 语句仍然正确,如果您将 Double 分配给数字或对象,则不需要转换。但是在这种情况下,E 不是“向上”分配,而是在两种可能的不同 Number 类型之间“横向”分配。如果 E 是 Short 或 Integer,在这些情况下,您不会期望能够在不强制转换的情况下为它们分配 Double。

关于java - 泛型和赋值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16824334/

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