我刚开始阅读有关泛型类的内容。我想知道参数类型的名称是否会影响传入的内容。代码1和代码2的工作方式是否完全相同?它们都是通用类吗?谢谢!
// Code 1
public class Bar<AnyType> {
private AnyType a;
}
// Code 2
public class Bar<Lalaland> {
private Lalaland a;
}
答案 0 :(得分:8)
它的工作方式完全相同,就像选择不同的变量名称一样。
int anyInt = 5;
VS
int lalaland = 5;
但是请务必小心选择与现有类名不同的泛型类型参数名称。虽然它是合法的,但当类型参数被误认为是类名时,会导致很多混淆。
// Don't do this.
public class Bar<Integer> // confusing!
根据the Java tutorial on the subject,
按照惯例,类型参数名称是单个大写字母。这与您已经了解的变量命名约定形成了鲜明的对比,并且有充分的理由:如果没有这种约定,就很难区分类型变量和普通类或接口名称。
最常用的类型参数名称是:
- E - Element(Java Collections Framework广泛使用)
- K - Key
- N - 数字
- T - Type
- V - 值
- S,U,V等 - 第2,第3,第4类