Scala公开嵌套在特征中的Case类

时间:2015-06-26 14:55:49

标签: scala

我有一个特点:

MyTrait {

  ...
  ...

  case class MyCaseClass(...)
}

object MyTrait {
  case class SomeOtherCaseClass(...)
}

对于我的一些测试,我需要公开MyCaseClass(...)。如何在我的测试中导入它?

3 个答案:

答案 0 :(得分:2)

这可能不符合您的要求。每个实例都有自己的MyCaseClass类型。换句话说:

val a = new MyTrait {}
val b = new MyTrait {}
a.MyCaseClass.getClass != b.MyCaseClass.getClass

执行此操作的一般方法是将其置于顶级:

case class MyCaseClass( ... )
trait MyTrait { ... }

或者如果你想要更严格的范围,请将它放在伴侣对象

object MyTrait {
  case class MyCaseClass(...)
}
trait MyTrait { ... }

答案 1 :(得分:0)

我最终做了我不想要的事情。我的测试类扩展了包含相关案例类的特征!

答案 2 :(得分:0)

trait Mytrait{
  case class MyCaseClass(t:String)
}
object Mytrait extends Mytrait

然后你可以

import Mytrait._

并致电MyCaseClass("t")