Java 协议缓冲区能否在重复字段的列表获取器上返回 null?

2022-09-04 03:01:43

假设您有一个重复的字段。

message Foo {
  optional int32 val = 1;
}

message Bar {
  repeated Foo foo = 1;
}

这将生成方法

List<Foo> getFooList()

是否有任何情况下 getFooList 将返回 null?还是它已经返回一个列表,即使它是空的?


答案 1

不,没有返回的情况。事实上,Java protobuf上生成的类中没有一个字段访问器返回;如果字段不存在,它们始终返回默认值。同样,setter 也不允许您设置 。nullnullnull


答案 2

请注意,除非另有指定,否则任何 Java 协议缓冲区方法都不接受或返回 null。

参考资料: https://developers.google.com/protocol-buffers/docs/reference/java-generated


推荐