假设我在源文件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.
现在我想要导入所有这些类A1
,A2
,A3
,A4
等。
我正在写import org.michael.foo.{A1, A2, A3, A4}
,但如果我要导入十几个案例类怎么办?
我可以使用import org.michael.foo._
,但我想只导入 ADT类而不是foo
的所有类。
导入这些ADT类的最佳方法是什么?
答案 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.*