2015-09-25 69 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