2

我在 Scala 中创建了一些用于持久化数据 mongodb 的案例类。客户端应用程序是用 Java 编写的,并通过传入这些案例类的实例来使用我的存储库。

它工作正常,除非我使用可选字段:

case class Person (name: String, email: Option[String])

现在从Java我不想引用Scala的选项,所以我宁愿重写一个允许客户端调用类似的构造函数

new Person("Jack", "jack@ripper.com");

伴随对象的工厂方法也可以。我正在寻找一种解决方案,它允许我在没有任何 scala 依赖的情况下编写 Java,最好不要比调用构造函数更复杂。想法?

4

1 回答 1

1

为什么这还不够?

case class Person (name: String, email: Option[String]) {
    def this(name: String, email: String) {
        this(name, Option(email))
    }
}

当然,它仍然使用Option[String],但它对客户端仍然不可见。唯一的问题是 Java 客户端代码仍然会看到这两个构造函数。

于 2012-01-10T17:41:40.623 回答