java泛型参数有约定俗成的单字母命名规范:t表示type(通用类型)、e表示element(集合元素)、k/v成对表示key/value(键值对)、n表示number(数值类型)、s/u/v等按序补充多参数,全大写且非缩写。

Java泛型参数不是随便取的字母,而是有一套广泛接受的命名习惯——它不强制,但遵守能大幅提升代码可读性和团队协作效率。选对字母,别人一眼就懂你在表达什么。
T 表示 Type(类型),通用首选
这是最基础、最灵活的泛型参数,适用于任何需要抽象类型的场景:泛型类、泛型方法、泛型接口。它不绑定具体语义,只强调“这是一个待确定的类型”。
- 适合定义容器、工具类、通用处理器等,比如
Box<t></t>、Result<t></t> - 当只有一个类型参数时,优先用 T,而不是 E 或 K
- 如果后续要扩展为多个参数,T 通常作为第一个(主类型)
E 表示 Element(元素),专用于集合
看到 List<e></e>、Set<e></e>、Queue<e></e> 就该明白:E 暗示“这个泛型承载的是一个元素序列”。它强调“被装进去的东西”。
- 仅在明确表示集合或类集合结构的元素类型时使用
- 不要在非集合类中硬套 E,比如
Pair<e e></e>就不如Pair<t u></t>清晰 - Java 标准库中所有 Collection 子接口都统一用 E,保持一致性
K 和 V 成对出现,专指 Map 键值对
K 是 Key(键),V 是 Value(值)。它们几乎总是一起出现,且顺序固定:Map<k v></k>。单独用 K 或 V 而不配对,容易让人困惑。
- 只要涉及键值映射逻辑,就用 K/V,比如
HashMap<string integer></string>对应<k v></k> - 不要颠倒顺序,也不要用 T 替代 K 或 V —— 这会削弱语义表达
- 自定义缓存、配置映射、策略路由等类,也建议沿用 K/V
N 表示 Number(数值),限定为数字类型
当你希望泛型参数只能是数值类(Integer、Double、BigDecimal 等),且需调用 doubleValue()、intValue() 等方法时,用 N 并配合上界约束更清晰:
- 写法示例:
class Calculator<n extends number></n> - 比
<t extends number></t>更具提示性:一看就知道是数值计算场景 - 避免用 T 替代 N,否则丢失业务意图
S、U、V 用于多参数,按顺序递补
当泛型需要三个或以上类型参数时,T 之后依次用 S(Second)、U(Third)、V(Fourth)。这不是硬性规定,但已是主流共识。
- 例如:
Triple<t u v></t>表示三元组;Function<t r></t>中 T 是输入,R 是返回结果(R 代表 Result) - 不推荐跳着用(如
<t v></t>),除非 V 确实代表 Value(如 Map 场景) - 超过四个参数时,建议考虑是否设计过重,或改用封装类替代
不复杂但容易忽略:这些字母都是大写单字母,不能是单词缩写(如 “Elem” 或 “KeyType”),也不能是小写。它们不是语法要求,却是 Java 生态的“通用语言”。用对了,别人读你代码就像读注释一样顺畅。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











