# 泛型(generic)

泛型(generic)是在 Java 1.5 中引入的一种特性。泛型可以定义在类、接口、方法中,编译器通过识别尖括号和尖括号内的字母来解析泛型,尖括号的位置必须在类名后或方法返回值前。

# 语法

public class Test<T> {}		// T 替换为 Object
public static <T extends Comparable> T min(T[] a) {} 	// T 被替换为 Comparable
1
2

语意:

public class Test<泛型符号> {}		// T 替换为 Object
public static <泛型符号> 方法返回值 min(T[] a) {} 	// T 被替换为 Comparable
1
2

约定俗称的符号包括:E - Element,T - Type,K - key,V - value。

# 类型擦除

泛型本质是类型参数化,其与 JVM 无关,仅在编译时做语法检查,编译后被替换,这就是所谓的“类型擦除”。

public class Test<T> {}		// T 替换为 Object
public static <T extends Comparable> T min(T[] a) {} 	// T 被替换为 Comparable
1
2

对于类型擦除,总结为一句话就是:无边界,替换为 Object ;有边界,替换为边界。

Last Updated: 4/25/2025, 8:53:41 AM