Elide类型参数.
当编译器找到泛型类型或方法的定义时,它会删除所有出现的类型参数,并用最左边的边界替换它们,如果没有指定绑定,则键入Object.
编辑:正如我在这种情况下所理解的那样,最左边的边界意味着它在字面上意味着什么,即在边界列表中最左边.我想明白为什么选择这项政策?
在这种情况下,"最左边"不是技术术语.字面意思是"最左边".它只是意味着当type参数有几个边界(限制)时,如下所示:
T extends Callable<Long> & Runnable
Run Code Online (Sandbox Code Playgroud)
编译器将类型参数的所有出现替换T为最左边的边界(在这种情况下是Callable<Long>):
这意味着,就像在Angelika的例子中一样:
private T task1, task2;
Run Code Online (Sandbox Code Playgroud)
替换为:
private Callable task1, task2;
Run Code Online (Sandbox Code Playgroud)