Scala akka onComplete似乎不起作用。尝试强制转换时的java.lang.ClassCastException
我现在试着问一个演员,然后在“完成”之后做一些事情 以下是我的例子: (此代码段包含在方法中) 当我尝试将任意对象强制转换为预期类型时Scala akka onComplete似乎不起作用。尝试强制转换时的java.lang.ClassCastException,scala,casting,akka,classcastexception,Scala,Casting,Akka,Classcastexception,我现在试着问一个演员,然后在“完成”之后做一些事情 以下是我的例子: (此代码段包含在方法中) 当我尝试将任意对象强制转换为预期类型时 any.asInstanceOf[ExpectedType] 。。。我收到以下例外情况: ERROR akka.actor.OneForOneStrategy - scala.runtime.BoxedUnit cannot be cast to ExpectedType java.lang.ClassCastException: scala.runtim
any.asInstanceOf[ExpectedType]
。。。我收到以下例外情况:
ERROR akka.actor.OneForOneStrategy - scala.runtime.BoxedUnit cannot be cast to ExpectedType
java.lang.ClassCastException: scala.runtime.BoxedUnit cannot be cast to ExpectedType
通常我希望any是“any”类型的对象,所以。。。我错过了什么
提前感谢未来。onComplete的返回类型为Unit,基本上不返回任何内容。
未来。onComplete的返回类型为Unit,基本上不返回任何内容。但是。。。正如您所看到的,在我的代码片段中有一个“return”。这是方法的一部分。当我使用该方法时,它会正确地返回我的对象,但之后当我尝试强制转换时,我再次得到相同的异常。您的返回被忽略。onComplete的定义:def onComplete[U](func:Try[T]=>U):单位
。因此,您的函数可以返回任何内容(U
)Future
的内部行为是不关心、忽略它并返回Unit
。您的any
具有类型单位
和值()
。。。正如您所看到的,在我的代码片段中有一个“return”。这是方法的一部分。当我使用该方法时,它会正确地返回我的对象,但之后当我尝试强制转换时,我再次得到相同的异常。您的返回被忽略。onComplete的定义:def onComplete[U](func:Try[T]=>U):单位
。因此,您的函数可以返回任何内容(U
)Future
的内部行为是不关心、忽略它并返回Unit
。您的any
具有类型Unit
和值()
。如果将onComplete
切换为,然后将切换为,则可以实现所需的完成副作用,同时保留从ask
返回的未来的原始返回类型。如果将onComplete
切换为,则可以实现完成副作用您想要的效果,并保留从ask
返回的Future
的原始返回类型。
ERROR akka.actor.OneForOneStrategy - scala.runtime.BoxedUnit cannot be cast to ExpectedType
java.lang.ClassCastException: scala.runtime.BoxedUnit cannot be cast to ExpectedType