字段可空性
本页说明 Fory 在跨语言(xlang)序列化模式下如何处理字段可空性。
默认行为
在 xlang 模式下,字段默认都是不可空的。这意味着:
- 字段值必须始终存在,不能为 null
- 不会为该字段额外写入 null 标记字节
- 序列化结果更紧凑
以下类型默认是可空的:
- Java 和 C++ 可空包装类型:
Optional<T> - Java 装箱类型(
Integer、Long、Double等) - Go 指针类型(
*int32、*string等) - Rust
Option<T> - Python 类型提示:
Optional[T]
| 字段类型 | 默认可空 | 是否写入 null 标记 |
|---|---|---|
基础类型(int、bool、float 等) | 否 | 否 |
String | 否 | 否 |
List<T>、Map<K,V>、Set<T> | 否 | 否 |
| 自定义结构体 | 否 | 否 |
| 枚举 | 否 | 否 |
Java 装箱类型(Integer、Long 等) | 是 | 是 |
Go 指针类型(*int32、*string) | 是 | 是 |
Optional<T> / Option<T> | 是 | 是 |