首先我认为java有一个名为Item的类型或类,但它似乎没有: Does java contain a data type named "Item"?
看来我可以在<>之间使用任何东西,无论它是否存在。
我想知道的是:
class Foo<Item> {
}
Foo<Vec2D> foo = new Foo<Vec2D>();
与:
相同class Foo<T> {
}
Foo<Vec2D> foo = new Foo<Vec2D>();
答案 0 :(得分:5)
您可以使用任何标识符作为参数名称,但使用单个字母可以减少混淆,因为它不太可能被误认为是类名。
Oracle的Generic types tutorial有以下建议:
按照惯例,类型参数名称是单个大写字母。这与您已经了解的变量命名约定形成鲜明对比,并且有充分的理由:如果没有这种约定,就很难区分类型变量和普通类或接口名称。
最常用的类型参数名称是:
- E - Element(Java Collections Framework广泛使用)
- K - Key
- N - 数字
- T - Type
- V - 值
- S,U,V等 - 第2,第3,第4类
答案 1 :(得分:0)
确实是一样的。它只是为未知泛型类型指定某个名称的方法。
来自Java教程&#39; Generic Types:
使用以下格式定义泛型类:
class name<T1, T2, ..., Tn> { /* ... */ }
由尖括号(&lt;&gt;)分隔的类型参数部分跟在类名后面。它指定类型参数(也称为类型变量)T1,T2,...和Tn。
...
还有一些命名约定暗示:
按照惯例,类型参数名称是单个大写字母。这与您已经了解的变量命名约定形成鲜明对比,并且有充分的理由:如果没有这种约定,就很难区分类型变量和普通类或接口名称。
最常用的类型参数名称是:
- E - Element(Java Collections Framework广泛使用)
- K - Key
- N - 数字
- T - Type
- V - 值
- S,U,V等 - 第2,第3,第4类
您将在整个Java SE API和本课程的其余部分中看到这些名称。
答案 2 :(得分:0)
是的,这是一样的。对于泛型,括号中的名称只是您要使用的类型的名称。
就像变量的名称与代码无关,类型的名称也无关紧要。