Could someone tell me how can I avoid the warning in the code block below:
abstract class Foo[T <: Bar]{
case class CaseClass[T <: Bar](t: T)
def m
Another variation to use, especially if you desire to use a trait (as opposed to using a class or abstract class which the other solution requires), looks like this:
import scala.reflect.{ClassTag, classTag}
trait Foo[B <: Bar] {
implicit val classTagB: ClassTag[B] = classTag[B]
...
def operate(barDescendant: B) =
barDescendant match {
case b: Bar if classTagB.runtimeClass.isInstance(b) =>
... //do something with value b which will be of type B
}
}