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

Java中定义泛型类的基本语法是:在 class 关键字后、类名之后,用尖括号 声明一个或多个类型参数,然后在类体中使用这些参数作为成员变量、方法参数或返回值的类型。
基础语法格式
标准写法如下:
class ClassName<t> { ... }</t>
其中 T 是类型形参(type parameter),只是一个占位符,代表将来使用时传入的具体类型。它不是实际类型,不能直接 new 或 instanceof;常见命名习惯有:
-
T(Type)——最常用,表示任意类型 -
E(Element)——常用于集合类 -
K(Key)、V(Value)——用于键值对结构,如Map<k v></k> -
N(Number)——当限定为数字类型时可选
支持多个类型参数
可用逗号分隔多个类型形参:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
class Pair<t u> { private T first; private U second; ... }</t>
例如:Pair<string integer> p = new Pair("name", 100);</string>
带类型边界的泛型类
若需限制传入类型范围(比如只能是 Number 及其子类),可用 extends 指定上界:
class Box<t extends number> { private T value; ... }</t>
此时 Box<string></string> 编译报错,但 Box<integer></integer> 或 Box<double></double> 合法。
注意事项
- 泛型只支持引用类型,基本类型(如
int)必须用对应包装类(Integer) - 类型参数在运行时被擦除(type erasure),JVM 中实际都是
Object或其子类 - 定义时不指定具体类型,使用时才通过
<...></...>实例化,如new ArrayList<string>()</string> - 可省略构造器中的类型实参(类型推导),如
new Box(),编译器会自动判断
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










