5
我需要一个可以从Scala和Java调用的构建器库。在Scala中使用默认的命名参数足够简单。但是,我如何从Java调用此代码?见下文。或者,我应该使用两种语言更通用的流畅API?适用于Scala和Java的Builder库
斯卡拉:
case class Person(gender:Gender.Value, firstName:String, lastName:String){
def fullName = lastName+", "+firstName
override def toString = firstName+","+lastName+","+gender
}
case class PersonBob(
gender:Gender = GenderBob().build,
firstName:String = null,
lastName:String = null) {
def build = Person(
gender,
if(firstName == null) NameBob(if(gender==Gender.Male) engMaleNames
else engFemaleNames).build else firstName,
if(lastName==null) NameBob(engLastNames).build
else lastName
)
}
用法:
val p1 = PersonBob().build
val p2 = PersonBob(lastName = "Jones").build
Java的使用方法:
Person p1 = ?
Person p2 = ?
请注意,我已经创建了一个类似但单独的问题关于类型安全的建造者。参见[http://stackoverflow.com/questions/6347083/type-safe-buider-library-for-scala-and-java](http://stackoverflow.com/questions/6347083/type-safe-buider-library - 用于-阶和Java)可 – eptx 2011-06-14 16:50:20