名义类型系统 / 名称类型系统:一种类型判定方式——类型是否相同(或是否兼容)主要取决于它们的“声明身份/名字/显式关系”(如同一个类型定义、或通过 extends/implements 明确建立的继承/实现关系),而不是仅看它们“结构上长得像不像”。常见于 Java、C#、Swift、Rust(部分场景)等语言。
(另有对比概念:structural typing 结构类型系统。)
/ˈnɑːmənəl ˈtaɪpɪŋ/
In Java, two classes with the same fields are not interchangeable because of nominal typing.
在 Java 中,即使两个类拥有相同的字段,也不一定能互换使用,因为它采用名义类型系统。
Nominal typing makes API boundaries clearer, but it can require extra wrappers when two structurally similar types are meant to be compatible.
名义类型系统能让 API 边界更清晰,但当两个结构很像的类型本应兼容时,可能需要额外的封装(包装类型)来适配。
nominal 来自拉丁语 nomen(“名字”),表示“基于名称/名义上的”。typing 源自 type(“类型”)+ -ing,表示“类型判定/类型体系”。合起来强调:类型关系以“名字与显式声明的关系”为核心依据。