gpt4 book ai didi

java - 从 protobuf 生成的文件中获取可变对象

转载 作者:行者123 更新时间:2023-11-30 09:44:19 25 4
gpt4 key购买 nike

我有一个相当简单的 android 应用程序,它从 Web 服务器获取 protobuf 数据,并有一个由 protoc 生成的 java 类。

现在我的应用程序中不需要任何其他数据。所以我想我会简单地使用这些数据而不是包装它,因为这只是很多额外的工作。

但是有时我用新数据(原型(prototype)文件中的嵌套消息)扩展树,然后我需要能够将这些插入当前树中,这是不允许的,因为 java 类总是返回 unmodifiableList。

我现在想我可以通过反射获得列表,因此可以修改。这似乎不是一个很好的解决方案,但它胜过做额外的工作来包装类和其中的所有内容。所以我的实际问题是,这是一个很大的禁忌还是可以接受。

我在某处读到,即使在谷歌内部,他们也争论将 protobuf 对象作为数据结构或仅作为纯发送/接收消息是否明智。

最佳答案

Protocol Buffer 消息实例是不可变的 by design .

如果你想操作最初来自 protobuf 的数据,创建一个新的 Builder ,使用 mergeFrom 预填充原始字段:

MyMessage originalMessage = getMyMessage();
MyMessage.Builder newMessage = new MyMessage.Builder();
newMessage.mergeFrom(originalMessage);

关于java - 从 protobuf 生成的文件中获取可变对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7956742/

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