参数类型中的名称是否确定该类是否是通用的?

时间:2014-01-17 16:39:16

标签: java generics

我刚开始阅读有关泛型类的内容。我想知道参数类型的名称是否会影响传入的内容。代码1和代码2的工作方式是否完全相同?它们都是通用类吗?谢谢!

// Code 1
public class Bar<AnyType> {
    private AnyType a;
}

// Code 2
public class Bar<Lalaland> {
    private Lalaland a;  
}

1 个答案:

答案 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类
  •