簡體   English   中英

在Java中使用Options和Scala枚舉實例化案例類

[英]Instantiate a case class with Options and Scala Enumeration in Java

似乎如果case類同時具有枚舉和選項,則無法從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 ???

編輯:現在相同的代碼給我沒有錯誤。 因此,這是一個月食錯誤,並且不可復制!


免責聲明:這只是我當前選擇的解決方法。

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 ,並且組合會急劇增長,那么這不是可行的解決方案。 但是對於我的情況(實際應用),我有三種組合。 當然,我希望會有更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM