让我们看一下这个定义:
public class Extend1<T, E> extends MyGeneric<T, E> {}在这里
T,
E分别以两次不同的角色出现
- 在
Extend1<T,E>
您 定义 类型参数。这意味着该类型Extend1
具有两个(无界)类型参数T
和E
。 这 告诉Java编译器那些 使用 它们的人Extend1
需要指定类型。 - 在
extends MyGeneric<T,E>
您 使用 先前定义的类型参数。如果T
并E
没有已知的类型参数在这里,然后T
和E
将是简单类型的引用,即会寻找类的编译器(或接口,…)命名T
和E
(最有可能找不到它们)。
是的,类型自变量遵循与Java中其他任何标识符相同的语法规则,因此您可以使用多个字母
ABC甚至名称,这可能会造成混淆(使用称为
String合法的类型自变量,但
高度 混乱)。
单字母类型参数名称只是一种非常常见的命名策略。



