sealed class A
class B1 extends A
class B2 extends A
Assuming we have a List of objects of class A
:
val l: List[A] = List(new B1, new B2, new B1, new B1)
And we want to filter out the elements of the type B1. Then we need a predicate and could use the following two alternatives:
l.filter(_.isInstanceOf[B1])
Or
l.filter(_ match {case b: B1 => true; case _ => false})
Personally, I like the first approach more, but I often read, one should use the match-case
statement more often (for reasons I do not know).
Therefore, the question is: Are there drawbacks of using isInstanceOf
instead of the match-case
statement ? When should one use which approach (and which approach should be used here and why) ?