一.泛型
在Java中,泛型(Generics)是JDK 5.0引入的一个新特性,它允许在定义类、接口和方法时使用类型参数(type parameters)。类型参数在使用前必须先被实际类型(如Integer、String等)替代,这个过程称作类型实例化或类型擦除。泛型提供了编译时类型安全,减少了运行时的类型转换错误,并允许创建可重用的组件,这些组件能够以一种类型无关的方式工作。
泛型的主要优点包括:
类型安全:通过泛型,编译器能够在编译时捕获许多类型错误,而不是等到运行时。
代码重用:泛型允许我们编写类型无关的代码,提高了代码的复用性。
简化代码:泛型减少了代码中的类型转换和装箱/拆箱操作,使代码更加简洁。
在Java中,泛型可以应用于类、接口、方法和变量中。泛型类:
public class Box {private T t;public void set(T t) {this.t = t;}public T get() {return t;}}
泛型接口:
public interface Comparable {int compareTo(T o);}
泛型方法:
public class GenericsTest {public static void printArray(T[] a) {for (T element : a) {System.out.println(element);}}}
泛型变量:
List myList = new ArrayList();
在泛型中,类型参数(Type Parameters)是用尖括号包围的,如Box中的T。类型参数在使用泛型类或方法时,被实际类型(Actual Types)替代,如Box中的String。
通配符泛型:
Java泛型还支持通配符类型参数(Wildcard Type Parameters),如?、? extends T和? super T。这些通配符允许更加灵活的泛型使用,尤其是在处理不确定类型或需要兼容多种类型的情况下。
类型擦除:
虽然Java泛型在编译时提供了类型安全性,但在运行时,所有的泛型信息都会被擦除,替换为Object类型或者具体的类型。这个过程叫做类型擦除(Type Erasure)。类型擦除确保了与旧版Java代码的兼容性,因为旧版Java并不支持泛型。
泛型是Java提高类型安全性和代码复用性的一个重要特性,使得编写更加健壮和灵活的代码成为可能。
二.List
在Java中,List 是一个接口,它属于 java.util 包。List 接口表示一个有序的集合(也称为序列),它允许存储重复的元素。List 接口提供了许多方法来操作列表中的元素,例如添加、删除、查找等。
Java中有多种实现 List 接口的类,最常用的包括 ArrayList 和