我需要一个可以从Scala和Java调用的构建器库.使用默认的命名参数在Scala中足够简单.但是如何从Java调用此代码?见下文.或者我应该使用更流行的两种语言更常见的API?
斯卡拉:
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
)
}
Run Code Online (Sandbox Code Playgroud)
用法:
val p1 = PersonBob().build
val p2 = PersonBob(lastName = "Jones").build
Run Code Online (Sandbox Code Playgroud)
Java用法:
Person p1 = ?
Person p2 = ?
Run Code Online (Sandbox Code Playgroud)