2015-09-25 104 views
-2

我有一個在scala伴侶對象中定義的案例類。案例分類的訪問成員

case class ResponseSuccess(resp: SMPPSubmitSMResp) 

對此我發送到阿卡 - 演員(JAVA)

if(res.isRight) sender ! Backend.ResponseSuccess(sms.resp) 

它收到這樣的,但我不知道如何從ResponseSuccess

} else if (msg instanceof Backend.ResponseSuccess) { 
     SMPPSubmitSMResp packet = (SMPPSubmitSMResp) msg; 
     someFunc(packet); 
} 
提取SMPPSubmitSMResp

我得到的錯誤(即收到消息)是:

Backend$ResponseSuccess cannot be cast to SMPPSubmitSMResp 
+2

您可以通過'msg.resp'來獲取'ResponseSuccess'中的'SMPPSubmitSMResp'。 –

+0

錯誤:找不到符號 [error] \t \t \t SMPPSubmitSMResp packet =(SMPPSubmitSMResp)msg.resp; [錯誤] \t \t \t^ [錯誤]符號:可變RESP [錯誤]的位置:Object類型的可變MSG – FelixHJ

+1

你需要投'msg'到'ResponseSuccess'第一。 –

回答

3

如果你使用Scala的,好的方法使用Scala的Pattern Matching

msg match { 
    case ResponseSuccess(resp) => // do something 
    case _ => // do something else 
} 

如果你想使用Java,你會得到很多,你要投的對象特別是對於阿卡的情況下,這樣你就可以實現一些實用工具爲自己。 Something like this

+0

OP在詢問如何在Java中完成它。 –

+0

主程序在Java中,一些添加/更改的模塊正在(重新)在scala中完成。我們更喜歡Scala,但不能只重寫所有內容。 – FelixHJ