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
You could use ClassTag (or TypeTag):
ClassTag
TypeTag
import scala.reflect.ClassTag abstract class Foo[T <: Bar : ClassTag]{ ... val clazz = implicitly[ClassTag[T]].runtimeClass def method1 = { case CaseClass(t) if clazz.isInstance(t) => println(t) // you could use `t.asInstanceOf[T]` case _ => } }