2016-07-24 22 views
0

假設我定義在源文件中A.scala像這樣的ADT:如何導入許多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類的最佳方式?

回答

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

基本上org.michael.foo._ 這是org.michael.foo.*在Java中

+0

謝謝。我只是忘了說我只想導入ADT類而不是所有類的'foo'。我會更新這個問題。 – Michael

+0

可能不是您正在尋找的東西,但您似乎可以在導入另一個導入時隱藏一些導入...它可以讓您看到ATD並隱藏所有要隱藏的類。請查看https://en.wikibooks.org/wiki/Scala/Import#Hiding瞭解更多詳情 –

+0

不知道隱藏。有趣! – Michael