확장 클래스에서 기본 클래스를 얻는 방법. 실제로 Scala에서는 새로운 기능으로 봉인 된 특성 클래스를 사용하여 코딩을 작성하려고합니다.스칼라의 봉인 된 형 변환 클래스
예를 들어, 하나의 봉인 된 트레일 클래스와 몇 가지 사례 클래스가 봉인 된 트레일 클래스로 확장되었습니다.
예 : 예 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)
)
}
}
}
을하지만, 유형이 example2 인 경우? 예를 들어 프로젝트를 이해하는 데 도움이 될 것입니다. 제안 해주세요.
첫 번째 예는 안전하지 않습니다. Person이 Employee가 아닌 경우 런타임에 예외가 발생합니다. 대신 고용주가있는 기록으로 무엇을하고 싶습니까? – puhlen
또한 Employer를 country 필드가있는 클래스로 정의했지만 Employee와 함께 사용하려고 시도하고 있습니다. 오타라고 가정합니다. 혼동을 피하기 위해 수정하십시오. – puhlen