首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Java协议缓冲区对象进行一点小的更改

对Java协议缓冲区对象进行一点小的更改
EN

Stack Overflow用户
提问于 2015-03-23 19:31:37
回答 1查看 10K关注 0票数 31

我想做一个小小的改变,深入到Java协议缓冲区对象的树中。

我可以使用.getBuilder()方法创建一个新对象,它是旧对象的克隆,但做了一些更改。

当在更深的层次上这样做时,代码会变得丑陋:

代码语言:javascript
复制
Quux.Builder quuxBuilder = foo.getBar().getBaz().getQuux().toBuilder()
Baz.Builder bazBuilder = foo.getBar().getBaz().toBuilder()
Bar.Builder barBuilder = foo.getBar().toBuilder()
Foo.Builder fooBuilder = foo.toBuilder()

quuxBuilder.setNewThing(newThing);
bazBuilder.setQuux(quuxBuilder);
barBuilder.setBaz(bazBuilder);
fooBuilder.setBar(barBuilder);

Foo newFoo = fooBuilder.build();

(这只是4个级别,我通常处理5-8个级别。)

有没有更好的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-25 01:50:16

另一种选择是(我认为;已经有一段时间了):

代码语言:javascript
复制
Foo.Builder fooBuilder = foo.toBuilder();
fooBuilder.getBarBuilder().getBazBuilder().getQuuxBuilder()
    .setNewThing(newThing);
newFoo = fooBuilder.build();

注意,这并没有提高效率;您仍然在复制foo、bar、baz和quux。

票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29209153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档