You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在UML类图中表示开放式泛型类型构造?

UML类图中泛型参数传递的建模约定问题

我了解到,在UML类图中可以通过bind构造型为开放式泛型类型提供类型实参。

比如以下C#代码:

public class A<T> {
}

public class B {
  public A<string> Value { get; set; }
}

对应的UML类图如下:
封闭式泛型类型类图

但如果是传递泛型参数,基于A<T>构造开放式泛型类型的情况该怎么处理?比如这段代码:

public class A<T> {
}

public class B<X> {
  public A<X> Value { get; set; }
}

按照之前的表示法,我画出的UML类图是这样的:
开放式泛型类型类图

但这种表示法容易让人困惑——X只在B的作用域内声明,却在A<X>里被当作全局有效声明使用。当多个类型引用A且都用名为X的泛型参数时,问题会更突出,比如添加下面这个类:

public class C<X> {
  public A<X> Data { get; set; }
}

这会导致两种不合理的情况:要么出现多个看起来完全一样的节点:
节点看似相同的类图
要么标识符X同时代表多个完全不同的独立声明对象:
X存在歧义的类图

是否存在处理此类情况的通用约定?


注:规范的构造类型类标签应该写成A<string>,但我发现PlantUML里无法实现,软件会把string渲染成开放式泛型参数,所以本文用方括号生成A[string]这样的标签。

内容的提问来源于stack exchange,提问作者F-H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:42:46