我在Scala代码中使用Java库并且必须使用一些构建器:
val buildResult = new Builder()
.withPropertyA(a)
.withPropertyB(b)
.withPropertyC(c)
.build()
如果bOption
和cOption
为Option
括号b
和c
并且不想要方法withPropertyB
和{{如果相应的值为withPropertyC
,则调用{1}}。
这样做的惯用方法是什么?
答案 0 :(得分:1)
Fluent接口,尤其是Java接口,通常依赖于变异,所以惯用的方法是将它包装在纯接口中。
但是,您可以(ab)使用就地突变来执行以下操作:
val builder = new Builder()
bOption.foreach(builder.withPropertyB)
cOption.foreach(builder.withPropertyC)
val buildResult = builder.build()