我知道,每个泛型类型变量都被替换为在方法“类型参数部分”开头从泛型定义中确定的上限。
这是来自Deitel书籍的内容。
实际上,所有类型参数都被替换为所谓的类型参数上限,在类型参数部分中指定。
根据这个,这个子代码必须是正确的。
public static <E extends Number> void A( )
{
E x= new Double(2.2);
}
但编译器告诉我在E x= new Double(2.2);处出现了编译错误,尽管这应该是正确的,因为double是数字。
我知道如何通过强制转换来处理和解决一般问题,但我想知道为什么会出现这种情况?