2016-12-14 3 views
0

スカラで抽象ジェネリッククラスのサブクラスを返そうとしていますが、コンパイルされません。私はを取得します。タイプAの式は、予想されるタイプBに適合しません。ここ がコードである私が使用しています:スカラ:抽象ジェネリックスーパークラスをサブクラス化できません

abstract class AA[T](val var1: String){ 
    def doSomething(): T; 
} 
class BB(override val var1: String) extends AA[Int](var1){ 
    override def doSomething(): Int = { 
    return 5 
    } 
} 

object Factory { 
    def create(v: String) : AA[Any] = { 
    return new BB("5") // this is the error 
    } 
} 

の署名が)(何を作るべきか?

おかげ

+0

をしていますが、 'return'を必要としないとセミコロンを必要としないことに注意してください:あなたはTAA共変をすることによってこの問題を解決することができます –

答えて

1

BBAA[Any]を返すためにAA[Int]が、Factory.create主張を拡張します。あなたの問題に関係のない

abstract class AA[+T](val var1: String){ 
    def doSomething(): T 
} 
関連する問題