加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:47:19 所属栏目:Java 来源:网络整理
导读:我想做一个小的变化,深入 Java协议缓冲对象的树. 我可以使用.getBuilder()方法来创建一个新对象,该对象是一个具有一些更改的旧对象. 当这样做在深层次时,代码变得丑陋: Quux.Builder quuxBuilder = foo.getBar().getBaz().getQuux().toBuilder()Baz.Builder
我想做一个小的变化,深入 Java协议缓冲对象的树.

我可以使用.getBuilder()方法来创建一个新对象,该对象是一个具有一些更改的旧对象.

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

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级)

有没有更好的办法?

解决方法

另一个选择是(我想,已经有一段时间了)
Foo.Builder fooBuilder = foo.toBuilder();
fooBuilder.getBarBuilder().getBazBuilder().getQuuxBuilder()
    .setNewThing(newThing);
newFoo = fooBuilder.build();

请注意,这不是更有效率;你还在复制foo,bar,baz和quux.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读