使用Java中的Options和Scala Enumeration实例化案例类

时间:2015-12-15 10:14:12

标签: java scala enumeration case-class scala-option

似乎案例类同时具有枚举和选项,我无法从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"));

我在实例化a时遇到错误(至少Eclipse显示错误),但bc工作正常!知道如何在Java中实例化EnumOption

1 个答案:

答案 0 :(得分:0)

编辑:现在相同的代码没有给我任何错误。所以这是一个日食错误,它不可重复!

免责声明:这只是我目前选择的解决方法。

case class EnumOption(e: WeekDay.Value, s: Option[String])
object EnumOption {
  def optionAvailable(e: WeekDay.Value, s: String) = new EnumOption(e, Some(s))
  def notAvailable(e: WeekDay.Value) = new EnumOption(e, None)
}

然后使用上述两种方法中的任何一种。

显然,如果周围有很多Option并且组合会从根本上增长,这不是一个可行的解决方案。但对于我的情况(真正的应用程序),我有三种组合。当然,我希望有更好的解决方案。