java泛型通过尖括号声明类型参数(如、),支持类与接口,实现编译期类型检查;类型参数可设边界(如t extends number),但不可创建泛型数组或实例,且不能用于静态成员。

Java 中定义泛型类和泛型接口,核心是把类型当作参数写在尖括号里,让类或接口能适配多种具体类型,同时保留在编译期的类型检查能力。
泛型类的定义方式
在类名后紧跟
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 单个类型参数: class Box
{ private T content; public void set(T content) { this.content = content; } public T get() { return content; } } - 多个类型参数: class Pair
{ private K key; private V value; } - 带边界约束: class NumberBox
{ private T value; } —— 表示 T 只能是 Number 或其子类(如 Integer、Double) - 不能用泛型类型创建数组或实例: new T[10] 或 new T() 是非法的,因类型擦除后无法确定真实类型
泛型接口的定义方式
接口同样支持泛型声明,语法与泛型类一致。实现该接口的类,可以选择在实现时指定具体类型,也可以继续保持泛型。
- 定义泛型接口: interface Generator
{ T generate(); } - 实现时固定类型: class RandomIntGenerator implements Generator
{ public Integer generate() { return (int)(Math.random() * 100); } } - 实现时仍保留泛型: class GenericContainer
implements Generator { private T data; public T generate() { return data; } }
命名规范与注意事项
类型参数名不是关键字,但按约定常用单个大写字母表示语义:
- T 表示 Type(通用类型)
- E 表示 Element(常用于集合元素)
- K 和 V 分别表示 Key 和 Value(常用于映射类)
- N 表示 Number,S/U/V 用于多参数场景
- 泛型参数不能用于静态成员:静态变量或静态方法中不能直接使用类声明的
,因为类型擦除后静态上下文与具体类型无关
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










