我知道,每个泛型类型变量都替换为上限,该上限是从方法"类型 - 参数部分"的开头的通用定义中确定的.
这是来自Deitel的书
实际上,所有类型参数都被类型参数的所谓上限替换,该参数在类型参数部分中指定.
据此,这个子码必须是真的
public static <E extends Number> void A( )
{
E x= new Double(2.2);
}
Run Code Online (Sandbox Code Playgroud)
但是编译器告诉我E x = new Double(2.2)中的编译错误 ; ,虽然这必须是真的,因为双数是.
我知道如何通过施法来处理和解决问题,但我问为什么会发生这种情况?