Why Use Generics?

简单来说,泛型使得types(类和接口)可以在定义类,接口和函数时作为参数。和函数申明中使用熟悉的formal参数(形参)类似,类型参数提供了一种方式,使得不同的输入可以使用相关的代码。不同的是形参的输入是值,但是类型参数的输入是类型。

使用泛型的代表比起没有使用泛型的代码有以下这些优势:

  • 编译时更强的类型检查

    Java编译器会在泛型代码上使用强类型检查,并在代码违反类型安全时报错。修复编译时异常比修复难以发现的运行时异常更加容易。

  • 消除强类型转换(casts

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

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

    使用泛型重写,可以避免类型转换:

    List<String> list = new ArrayList<String>();
    list.add("hello");
    String s = list.get(0);   // no cast
  • 使得开发者可以实现通用的算法

    通过使用泛型,开发者实现作用于不同类型集合的通用算法,这些算法可以是自定义的同时是类型安全并且易于阅读的。

Last updated