Je rencontre des problèmes de compilation avec les génériques. Le code compile bien lorsque j'utilise asInstanceOf
. Je veux me débarrasser de asInstanceOf
.scala - using asInstanceOf avec des génériques
J'ai vu d'autres questions liées à l'utilisation de asInstanceOf
, mais je ne m'a pas aidé.
trait RoundRobin[R <: Resource, F[_] <: mutable.ListBuffer[_]] {
self: RoundRobin[R, F] =>
// some public functions
private def overrideMutableResourceList(original: F[R], updated: F[R]): F[R] = {
val tempPool = original.asInstanceOf[mutable.ListBuffer[R]]
original.indices.foreach(i => {
val e = updated(i).asInstanceOf[R]
tempPool.update(i, e)
})
tempPool.asInstanceOf[F[R]]
}
Lorsque je retire la asInstanceOf
de tempPool.asInstanceOf[F[R]]
je reçois l'erreur ci-dessous
[error] /Users/...../RoundRobin.scala:108: type mismatch;
[error] found : tempPool.type (with underlying type scala.collection.mutable.ListBuffer[R])
[error] required: F[R]
[error] tempPool
[error] ^
[error] one error found
[error] (clustering/compile:compileIncremental) Compilation failed
[error] Total time: 3 s, completed Oct 3, 2017 2:53:34 AM
Ce problème se produit également pour la ligne original.asInstanceOf[mutable.ListBuffer[R]]
- Quelle est la raison de ce problème?
- Comment puis-je éviter d'utiliser
asInstanceOf
?
Merci