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

Java 从protobuf生成的文件中获取可变对象,java,android,data-structures,protocol-buffers,Java,Android,Data Structures,Protocol Buffers,我有一个相当简单的android应用程序,它从web服务器获取protobuf数据,并有一个由protoc生成的java类 现在,除了我的应用程序中的这些数据,我不需要任何其他数据。所以我想我会简单地使用这些数据,而不是包装它,因为这将是一个额外的工作很多 但是,有时我会用新数据(proto文件中的嵌套消息)展开树,然后我需要能够将这些数据插入到当前树中,这是不允许的,因为java类总是返回unmodifiableList 我现在在想,我可以通过反射获得列表,因此可以修改。这似乎不是一个很好的解

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

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

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

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


我在某个地方读到,即使在谷歌内部,他们也认为将protobuf对象作为数据结构或仅作为纯粹的发送/接收消息是明智的。

协议缓冲区消息实例是不可变的

如果要处理原始protobuf中的数据,请使用MERGEFORM创建一个新字段,以预填充原始字段:

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