# 为什么要使用泛型?

简而言之,在定义类,接口和方法时,泛型使 类型(类和接口)成为参数。 就像方法声明中使用的更熟悉的 形式参数 一样,类型参数为您提供了一种方法, 让您在不同的输入中重用相同的代码。区别在于形式参数的输入是值,而类型参数的输入是类型。

使用泛型的代码比非泛型代码有许多优点:

  • 编译时更强大的类型检查。

    Java 编译器将强类型检查应用于通用代码,并在代码违反类型安全性时发出错误。修复编译时错误比修复运行时错误要容易得多。

  • 消除强制转换

    以下没有泛型的代码段需要强制转换:

    List list = new ArrayList();
    list.add("hello");
    String s = (String) list.get(0);
    
    1
    2
    3

    当重写为使用泛型时,代码不需要强制转换:

    List<String> list = new ArrayList<String>();
    list.add("hello");
    String s = list.get(0);   // no cast
    
    1
    2
    3
  • 使程序员能够实现通用算法。

    通过使用泛型,程序员可以实现泛型算法,这些泛型算法可以处理不同类型的集合,可以进行定制,并且类型安全,易于阅读。