Scala IntelliJ警告"动态调用可以用构造函数调用替换"

时间:2017-07-30 05:53:27

标签: scala intellij-idea akka

为什么Intellij会发出此警告,这是什么意思,我该如何做得更好?

import akka.actor.Props

object Router {
  def props(config: Config, addresses: Set[Address]): Props =
    Props(classOf[Router], config, addresses)
    // "dynamic invocation could be replaced with a constructor invocation"

如果我的道具在场,我会收到不同的警告。

system.actorOf(Props(classOf[Router], config, addresses))
// could be replaced with factory method call

由于

1 个答案:

答案 0 :(得分:5)

您是否遗漏了一个带有class Router实例和Config个实例集合的构造函数的Address定义?有点像...

class Router(config: Config, addresses: Set[Address]) extends Actor

如果是,请尝试对随播对象进行以下轻微修改。

object Router {

  def props(config: Config, addresses: Set[Address]): Props = {
    Props(new Router(config, addresses))
  }

}

这跟best practices之后用于创建演员,可能会消除警告。