私はそうのような(スカラ)オブジェクト階層があります。Scalaの親と子オブジェクト間の型の不一致(Javaで定義されたクラスのクラスの型がTで不変である)
class Vehicle {
...
}
class Car extends Vehicle {
...
}
class Motorcycle extends Vehicle {
...
}
などを私はいくつかを取るメソッドを持っていますここでの問題は、私はclassOf
割り当てにコンパイルエラーを得ることである
def chooseVehicleType(fizz : String) : Class[_ <: Vehicle] = {
fizz match {
case "buzz" => classOf[Car]
case "foo" => classOf[Motorcycle]
// etc.
case _ => throw new UnsupportedOperationException(s"We don't support ${fizz} yet.")
}
}
:
入力し、「それに最適」であるVehicle
サブクラスの
クラス型を返します。
タイプの不一致。見つかった:Classcom.me.myapp.model.Car required:クラス[com.me.myapp.model.Vehicle] 注:com.me.myapp.model.Car <:com.me.myapp.model.Vehicle Java定義のクラスClassはT型では不変です。たとえば、_ <:com.me.myapp.model.Vehicleのようなワイルドカード型を調べることができます。 (SLS 3.2.10)
ここで何が起こっているのか、修正は何ですか?
いいえ、このコードでは(「クラス」の代わりに「カー」を返す場合を除いて)このエラーは発生しません。 –