Java中定义泛型类的基本语法是:在class关键字后、类名之后用<>声明类型参数(如class Box<T>),T为占位符,代表使用时传入的具体引用类型;支持多参数(如Pair<T,U>)和上界限制(如T extends Number),运行时发生类型擦除。

Java中定义泛型类的基本语法是:在 class 关键字后、类名之后,用尖括号 <> 声明一个或多个类型参数,然后在类体中使用这些参数作为成员变量、方法参数或返回值的类型。
基础语法格式
标准写法如下:
class ClassName<T> { ... }
其中 T 是类型形参(type parameter),只是一个占位符,代表将来使用时传入的具体类型。它不是实际类型,不能直接 new 或 instanceof;常见命名习惯有:
立即学习“Java免费学习笔记(深入)”;
-
T(Type)——最常用,表示任意类型 -
E(Element)——常用于集合类 -
K(Key)、V(Value)——用于键值对结构,如Map<K, V> -
N(Number)——当限定为数字类型时可选
支持多个类型参数
可用逗号分隔多个类型形参:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
class Pair<T, U> { private T first; private U second; ... }
例如:Pair<String, Integer> p = new Pair<>("name", 100);
带类型边界的泛型类
若需限制传入类型范围(比如只能是 Number 及其子类),可用 extends 指定上界:
class Box<T extends Number> { private T value; ... }
此时 Box<String> 编译报错,但 Box<Integer> 或 Box<Double> 合法。
注意事项
- 泛型只支持引用类型,基本类型(如
int)必须用对应包装类(Integer) - 类型参数在运行时被擦除(type erasure),JVM 中实际都是
Object或其子类 - 定义时不指定具体类型,使用时才通过
<...>实例化,如new ArrayList<String>() - 可省略构造器中的类型实参(类型推导),如
new Box<>(),编译器会自动判断

















