ケースクラスに列挙型とオプションの両方がある場合、Java からインスタンス化できないようです。
Scala では次のことを考慮してください。
object WeekDay extends Enumeration {
type WeekDay = Value
val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
case class EnumOption(e: WeekDay.Value, s: Option[String])
case class EnumOnly (e: WeekDay.Value, s: String)
case class OptionOnly(e: Int, s: Option[String])
そして、それらを使用するために Java で以下を実行します。
scala.Enumeration.Value monday = WeekDay.Mon();
EnumOption a = new EnumOption(monday, Option.apply("12"));
EnumOnly b = new EnumOnly(monday, "12");
OptionOnly c = new OptionOnly(12, Option.apply("12"));
インスタンス化時にエラーが発生します (少なくとも Eclipse ではエラーが表示されます)が、問題a
なく動作します! Javaでインスタンス化する方法はありますか???b
c
EnumOption