我在Scala中创建了一些用于保存数据mongodb的案例类。客户端应用程序是用Java编写的,并通过传入这些案例类的实例来使用我的存储库。
它工作正常,除非我使用可选字段:
case class Person (name: String, email: Option[String])
现在来自Java我不想引用Scala的Option,所以我更喜欢覆盖一个允许客户端调用类似
的构造函数new Person("Jack", "jack@ripper.com");
伴侣对象上的工厂方法也可以。我正在寻找一种解决方案,允许我在没有任何scala deps的情况下编写Java,最好不要比调用构造函数更复杂。想法?
答案 0 :(得分:1)
为什么这不足够?
case class Person (name: String, email: Option[String]) {
def this(name: String, email: String) {
this(name, Option(email))
}
}
当然,它仍然使用Option[String]
,但它仍然对客户端不可见。唯一的问题是Java客户端代码仍然会看到两个构造函数。