구체적인 하위 클래스를 생성하는 추상 클래스에서 생성자를 정의하려고합니다.기본 추상 클래스에서 서브 클래스 구성하기
abstract class A {
type Impl <: A
def construct() : Impl = {
val res = new Impl() //compile error: class type required but A.this.Impl found
// do more initialization with res
}
}
class B extends A {type Impl = B}
class C extends A {type Impl = C}
//...
val b = new B
b.construct() // this should create a new instance of B
무엇이 잘못 되었나요? 이것은 구현할 수 있습니까? 편집 : 설명 : 구문을 추상화하고 싶습니다. new B
및 new C
을 하위 클래스 또는 컴패니언 개체에서 개별적으로 호출하고 싶지 않습니다.
새 B 또는 새 C를 부르는 것을 피함으로써 어떤 이점이 있습니까? – Monkey
많은 서브 클래스 (B, C, D, ...)가있을 수 있으며 중복/상용구 코드를 피하기를 원합니다. – Adrian
당신이하고 싶은 일을 할 수있는 유일한 방법은 리플렉션을 사용하는 것입니다. 나는 나의 대답에서 말했듯이 훌륭한 생각이 아니다. – Monkey