Scala の封印されたトレイト
Mohammad Irfan
2023年6月21日
このチュートリアルでは、Scala での実行例を使用して、封印された特性について説明します。
Scala の封印されたトレイト
Scala のトレイトは Java のインターフェースに似ており、クラス間でデータを共有するために使用されます。 クラスはインスタンス化できますが、トレイトはインスタンス化できません。
Scala では、継承を制限するために、クラスと同様にトレイトをシール済みとしてマークできます。 封印された特性とすべてのサブタイプを同じファイルで宣言して、すべてのサブタイプが確実に認識されるようにする必要があります。
特性を定義するには、次のように trait
キーワードを使用します。
trait Runnable
同様に、封印された特性を作成するには、次のように sealed
クラスを使用します。
sealed trait Runnable
キーポイント:
- 封印された特性は、同じファイル内でのみ拡張できます。
- コンパイラは、考えられるすべてのサブタイプを容易に認識します。
- 可能なサブタイプの数が有限であり、事前にわかっている場合にのみ、封印された特性を使用することをお勧めします。
Scala で Sealed Trait を作成する
Scalaでsealed traitを作って理解しよう。
import scala.collection.mutable.ArrayBuffer
sealed trait Color {
val name: String
}
class Black(val name: String) extends Color
class Red(val name: String) extends Color
object MyClass {
def main(args: Array[String]) {
val black = new Black("Black")
val red = new Red("Red")
val animals = ArrayBuffer.empty[Color]
animals.append(black)
animals.append(red)
animals.foreach(color => println("Color Name: "+color.name))
}
}
出力:
Color Name: Black
Color Name: Red