首页 > 解决方案 > 没有结果的类型测试:Option[akka.actor.ActorSystem] 类型的值不能也是 akka.actor.ActorSystem

问题描述

我正在使用替罪羊进行静态代码分析我收到一条警告消息

fruitless type test: a value of type Option[akka.actor.ActorSystem] cannot also be a akka.actor.ActorSystem

这是我的代码

object ActorSystemSetting extends ActorSystemSettingTrait{
  val config = ConfigFactory.load()
  val log = LoggerFactory.getLogger(this.getClass)

  var actorSystem  :  Option[ActorSystem] = None
   def createActorSystem: Option[ActorSystem] = {
      actorSystem = Option(ActorSystem("ArteciateActorSystem", config))
      actorSystem
    }

  def getActorSystem  :  Option[ActorSystem] ={
    if (actorSystem == None){
      createActorSystem
    }
    else{
     log.debug("ActorSystem is not null")
    }
    actorSystem
  } 
}

在本节中,我在线收到警告消息

case Some(system: ActorSystem) =>




   Option(ActorSystemSetting.getActorSystem) match {
          case Some(system: ActorSystem) =>
            system.actorOf(Props[PaymentViaCreditDeletionActor]
              , name = "PaymentViaCreditDeletionActor")
          case None => log.debug("ActorSystem is null")
        }
}

标签: scalawarningsstatic-analysis

解决方案


你需要改变这个

Option(ActorSystemSetting.getActorSystem) match {

仅此:

ActorSystemSetting.getActorSystem match {

ActorSystemSetting.getActorSystem已经返回Option(ActorSystem),因此您无需将其包装在另一个Option.

它不起作用,因为您试图将类型的值与 匹配Option[Option[ActorSystem]]Some(system: ActorSystem)该类型的类型Option[ActorSystem]因此永远无法匹配。


推荐阅读