如何导入许多ADT类

时间:2016-07-24 13:54:45

标签: scala

假设我在源文件A.scala中定义了一个ADT,如下所示:

package org.michael.foo

 sealed trait A extends Product with Serializable
 case class A1() extends A
 case class A2() extends A
 case class A3() extends A
 case class A4() extends A
 // etc., etc.

现在我想要导入所有这些类A1A2A3A4等。 我正在写import org.michael.foo.{A1, A2, A3, A4},但如果我要导入十几个案例类怎么办?

我可以使用import org.michael.foo._,但我想只导入 ADT类而不是foo的所有类。

导入这些ADT类的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

您可以将实施移动到A的随播对象中。这是一种相当常见的模式:

package org.michael.foo

sealed trait A extends Product with Serializable
object A {
  case class A1() extends A
  case class A2() extends A
  case class A3() extends A
  case class A4() extends A
}

import org.michael.foo.A._
A3()

答案 1 :(得分:1)

基本上org.michael.foo._ 这相当于Java中的org.michael.foo.*