试图了解 Java 泛型

Trying to understand about Java Generics

Java 通用 类 的语法和方法直到 Java 的 5.0 才添加。但是 Java 的早期版本有集合 类,例如数组列表或链表。 类 是如何在没有通用语法的情况下实现和使用的。为什么泛型的语法更好?

泛型提供类型安全。例如,如果你有 ArrayList<String> 你知道它只能容纳字符串。但是,如果您只有 List 作为原始类型,则可以向其添加不同类型的对象,这可能会在运行时从列表中检索项目时导致 ClassCastExceptions。

有关为什么应始终使用泛型而不是原始类型的完整解释,请参阅 Effective Java 中关于泛型的章节,特别是 "Item 23: Don't use raw types in new code":http://uet.vnu.edu.vn/~chauttm/e-books/java/Effective.Java.2nd.Edition.May.2008.3000th.Release.pdf

如果没有泛型,每个项目都将作为所有 Java 对象的基础 class 'Object' 存储在集合中。这意味着当您将它们从集合中取出时重新铸造它们。重铸意味着你必须确定它们是什么类型,这会让你容易犯下危险的错误。使用泛型,您可以永久记录您存储在集合中的 class/type 个对象,这样当它们出现时,它们仍然表示为 class 个对象。不再有类型转换问题。

阅读 Java 教程中的 Why Use Generics? 以获得充分的理由。

总结

  • 编译时更强的类型检查;
  • 消除演员阵容;
  • 使程序员能够实现通用算法,从而重用更多代码。