fad*_*bee 18 java protocol-buffers
我想在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();
Run Code Online (Sandbox Code Playgroud)
(这只是4级,我经常处理5-8级.)
有没有更好的办法?
Ken*_*rda 24
另一种选择是(我认为;已经有一段时间了):
Foo.Builder fooBuilder = foo.toBuilder();
fooBuilder.getBarBuilder().getBazBuilder().getQuuxBuilder()
.setNewThing(newThing);
newFoo = fooBuilder.build();
Run Code Online (Sandbox Code Playgroud)
请注意,这不是更有效; 你还在复制foo,bar,baz和quux.
归档时间: |
|
查看次数: |
5669 次 |
最近记录: |