저는 Scala를 처음 접했습니다. 메서드를 하위 클래스에서 구현해야하는 추상 클래스를 작성하려고합니다. 제네릭을 사용하여 메서드가 현재 클래스의 매개 변수를 사용하도록 강제하고 싶습니다.
abstract class MySuper{
def doSomething:(MyInput[thisclass]=>MyResult)
}
class MySub extends MySuper{
override def doSomething:(MyInput[MySub]=>MyResult)
}
나는 thisclass
위의 내용이 유효하지 않다는 것을 알고 있지만 그것이 내가 말하고 싶은 것을 표현한다고 생각합니다. 기본적으로 구현 클래스를 참조하고 싶습니다. 이것에 대해 유효한 방법은 무엇입니까?
간단한 트릭으로이 작업을 수행 할 수 있습니다.
trait MySuper[A <: MySuper[A]]{
def doSomething(that: A)
}
class Limited extends MySuper[Limited]{
def doSomething(that: Limited)
}
다른 접근 방식이 있지만 이것이 당신이 원하는 것을 표현하는 데 상당히 효과적이라는 것을 알았습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다