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