los argumentos por defecto no son interoperables entre Scala y Java, como se menciona en el último comunicado de http://www.scala-lang.org/node/2075.
para determinar cómo usar el código anterior de java, quizás javap puede ayudar. tomemos un ejemplo más pequeño que el que ha publicado. por ejemplo
case class PersonBob(a: String = "aa", b: String = null)
compilar esta usando scalac y, a continuación, ejecutar javap en el archivo de clase producida (sin la extensión .class), obtenemos
public class PersonBob extends java.lang.Object implements scala.ScalaObject,scala.Product,scala.Serializable {
public static final java.lang.String apply$default$2();
public static final java.lang.String apply$default$1();
public static final java.lang.String init$default$2();
public static final java.lang.String init$default$1();
public static final scala.Function1 tupled();
public static final scala.Function1 curry();
public static final scala.Function1 curried();
public scala.collection.Iterator productIterator();
public scala.collection.Iterator productElements();
public java.lang.String a();
public java.lang.String b();
public PersonBob copy(java.lang.String, java.lang.String);
public java.lang.String copy$default$2();
public java.lang.String copy$default$1();
public int hashCode();
public java.lang.String toString();
public boolean equals(java.lang.Object);
public java.lang.String productPrefix();
public int productArity();
public java.lang.Object productElement(int);
public boolean canEqual(java.lang.Object);
public PersonBob(java.lang.String, java.lang.String);
}
podemos ver que el único constructor que tenemos es
public PersonBob(java.lang.String, java.lang.String);
por lo que en su caso, el código java sería algo como
Person p1 = new PersonBob(new GenderBob().build(), null, null)
Person p2 = new PersonBob(new GenderBob().build(), null, "Jones")
suponiendo que la clase GenderBob no tiene parámetros en su constructor. en cuanto a la fluidez de esto en Java, supongo que en última instancia es una cuestión de gusto, pero en mi humilde opinión, creo que la versión de Java podría ser menos detallada para un constructor
Tenga en cuenta que he creado una pregunta similar pero separada con respecto al constructor de tipo seguro. Ver [http://stackoverflow.com/questions/6347083/type-safe-buider-library-for-scala-and-java](http://stackoverflow.com/questions/6347083/type-safe-buider-library -for-scala-and-java) – eptx