2017-04-17 50 views
0
val list = List(A(None,None,Some("dummyText")), 
      "DummmyText", None, None, None, None, None, None, Some("322"), 
      Some("1233")) 

的情況下,I類需要將其轉換爲case class如何創建列表

case class Dummy(code: A, someValue1: String, someValue2: Option[B] = None, 
          someValue3: Option[B] = None, someValue4: Option[B] = None, 
          someValue5: Option[B] = None, someValue6: Option[A] = None, 
          someValue7: Option[List[A]] = None, someValue8: Option[String] = None, someValue9: Option[String] = None) 

我想這Instantiating a case class from a list of parameters

但不工作,因爲我的List有子類型。

是可以轉換List這樣可以轉換成case class

回答

2

您有一個錯誤在你則params的列表,如果你遵循謹慎引用Instantiating a case class from a list of parameters,它的工作:

val params = List(
    A(None,None,Some("dummyText")), 
    "DummmyText", 
    None, 
    None, 
    None, 
    None, 
    None, 
    None, 
    Some("1233") 
) 

case class Dummy(code: A, 
      someValue1: String, 
      someValue2: Option[B] = None, 
      someValue3: Option[B] = None, 
      someValue4: Option[B] = None, 
      someValue5: Option[B] = None, 
      someValue6: Option[A] = None, 
      someValue7: Option[List[A]] = None, 
      someValue8: Option[String] = None 
) 


Dummy. 
    getClass. 
    getMethods. 
    find(x => x.getName == "apply" && x.isBridge). 
    get. 
    invoke(Dummy, params map (_.asInstanceOf[AnyRef]): _*). 
    asInstanceOf[Dummy] 
+0

感謝@mavarazy。我編輯了參數。當我嘗試這樣做時,在「find(x => x.getName ==」)行處得到錯誤「play.api.http.HttpErrorHandlerExceptions $$ anon $ 1:Execution exception [[NoSuchElementException:None.get]]」 「&& x.isBridge)。get。」 – sowmiyaksr

+0

我想,還有一些其他問題。我會找到確切的原因。謝謝:-) – sowmiyaksr

+0

我得到了原因這是因爲我的案例類超過22個領域。確切24場。有24種方法可以做到這一點嗎? – sowmiyaksr