类图:泛型与集合类型

类图:泛型与集合类型

puml.online

简介 / Introduction

泛型(Generics)和集合类型(Collection Types)是面向对象设计中的核心概念。在类图中,泛型约束了类成员、返回值和参数的参数化类型。本篇以 List<T>Map<K,V> 为例,对比 PlantUML 与 Mermaid 的实现方式。

PlantUML 版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@startuml
skinparam classAttributeIconSize 0

interface List<T> {
+add(item: T): void
+get(index: int): T
+size(): int
}

interface Map<K, V> {
+get(key: K): V
+put(key: K, value: V): void
+containsKey(key: K): boolean
}

class ArrayList<T> implements List<T> {
-data: T[]
+add(item: T): void
+get(index: int): T
}

class HashMap<K, V> implements Map<K, V> {
-buckets: Entry<K,V>[]
+get(key: K): V
+put(key: K, value: V): void
}

class Entry<K, V> {
+key: K
+value: V
}

List <|.. ArrayList
Map <|.. HashMap
@enduml

PlantUML 原生支持 <T><K,V> 泛型语法,可直接写在类名和方法签名中,implements 关系也天然支持泛型参数。

Mermaid 版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
classDiagram
class List~T~ {
<<interface>>
+add(item: T): void
+get(index: int): T
+size(): int
}

class Map~K,V~ {
<<interface>>
+get(key: K): V
+put(key: K, value: V): void
+containsKey(key: K): boolean
}

class ArrayList~T~ {
+add(item: T): void
+get(index: int): T
}

class HashMap~K,V~ {
+get(key: K): V
+put(key: K, value: V): void
}

class Entry~K,V~ {
+key: K
+value: V
}

List <|.. ArrayList
Map <|.. HashMap

Mermaid classDiagram 使用 ~T~ 语法表示类型参数(波浪号包围),<<interface>> 标注接口,同样支持继承关系。

对比 / Side-by-side

特性 PlantUML Mermaid
泛型类名 class Map<K, V> class Map~K,V~
接口标注 interface List<T> <<interface>> 在类体内
泛型方法 +get(key: K): V +get(key: K): V
实现关系 implements `<
成员可见性 + - # ~ + - # ~

小结 / Wrap-up

两者均可表达泛型类图:PlantUML 语法更贴近源码风格,implements 关键字语义清晰;Mermaid 用 ~T~ 标记类型参数,在不支持泛型的渲染器中也有降级方案。实际项目中PlantUML 更适合复杂的企业级类图,Mermaid 则更易于嵌入 Markdown 文档和博客。

  • 标题: 类图:泛型与集合类型
  • 作者: puml.online
  • 创建于 : 2026-09-04 09:00:00
  • 更新于 : 2026-09-04 01:06:45
  • 链接: https://puml.online/blog/class-diagram-generics/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。