拡張クラスから基本クラスを取得する方法。実際、私はScalaで新しく、密閉されたtraitクラスを使用していくつかのコーディングを作成しようとしています。例えばScalaで密閉された特性クラス変換
、私は1つの密閉トレイルクラス密封トレイルクラスに拡張いくつかのケースクラスを有しています。
例:例1の場合
type example1 = RDD[(String, Int, Person)] => RDD[((String, Int), Employee)]
type example2 = RDD[(String, Int, List[Employer])] => RDD[((String, Int), List[Person])]
:
sealed trait Person
case class Employer(name: String, id: Int, country: List[String]) extends Person
case class Employee(name: String, id: Int) extends Person
私は、次のタイプの例を探しています、私は次のことをしようとしています:
def getType1(data: RDD[(String, Int, Person)]) = {
val res = data.map {
x => {
val emp = x._3.asInstanceOf[Employee]
((x._1, X._2), Employee(emp.name, emp.id)
)
}
}
}
が、どのように逆を行うにはタイプ2の場合? 私のプロジェクトを理解するのに役立つ例がありますので、私に提案してください。
最初の例は安全ではないことに注意してください。人が従業員でない場合は、実行時に例外が発生します。あなたは代わりに雇用者を持っているレコードで何をしたいですか? – puhlen
また、Countryフィールドを持つクラスとしてEmployerを定義しましたが、Employeeと一緒に使用しようとしていますが、これは誤植と見なします。混乱を避けるために修正してください。 – puhlen