gpt4 book ai didi

protocol-buffers - 使用 Protocol Buffer 进行多态性的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 06:00:10 26 4
gpt4 key购买 nike

我正在尝试长期序列化一堆与java中强大的类层次结构相关的对象,并且我想使用protocol buffers来完成它,因为它们的简单性、性能和易于升级。然而,它们并没有为多态性提供太多支持。现在,我处理它的方式是通过一个“一条消息来统治所有”解决方案,该解决方案具有一个必需的字符串 uri 字段,允许我通过反射实例化正确的类型,然后是一堆可选字段我可以序列化其他可能的类,但只会使用其中之一(基于 uri 字段的值)。有没有更好的方法来处理多态性,或者这是否像我想要的那样好?

最佳答案

proto3中,extend关键字已被替换。来自 docs : 如果您已经熟悉 proto2 语法,则 Any 类型会取代扩展。

syntax = "proto3";

import "google/protobuf/any.proto";

message Foo {
google.protobuf.Any bar = 1;
}

但请注意:Any 本质上是一个字节 blob。大多数时候最好使用 Oneof :

syntax = "proto3";

message A {
string a = 1;
}

message B {
string b = 1;
}

message Foo {
oneof bar {
A a = 1;
B b = 2;
}
}

关于protocol-buffers - 使用 Protocol Buffer 进行多态性的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3018743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com