scala:防止伴随Object隐藏原始类的定义

ope*_*sas 5 scala companion-object

我认为通过一个例子更容易展示.

假设我有一个Condition case类,Condition伴随对象用于提供替代构造函数,如下所示:

case class Condition(
  field: String, 
  values: List[String])
}

object Condition {
  def apply(field: String, value: String): Condition = {
    Condition(field, List(value))
  }
}
Run Code Online (Sandbox Code Playgroud)

当我从另一个导入它时,我得到以下警告(最终变成错误):

import utils.query.Condition 

[warn] [...]/ConditionBuilder.scala:14: imported `Condition' is permanently hidden by definition of object Condition in package query
[warn] import utils.query.Condition
[warn]        ^
[warn] one warning found
Run Code Online (Sandbox Code Playgroud)

我想在执行变量类型时访问条件类型,并在执行其中一个方法时访问伴随对象

有没有办法实现这一点,并避免这种警告(当然,除了重命名伴侣对象)?

ope*_*sas 2

到目前为止,我发现的解决方法是像这样导入:

import utils.query

[...]

val myCondition: query.Condition
Run Code Online (Sandbox Code Playgroud)

警告消失了,但我认为应该有更好的解决方案......