没有案例类的模式匹配

时间:2013-11-15 14:18:52

标签: scala types pattern-matching case-class

是否可以通过模式匹配来检测不属于案例类的类的子类型?

我需要使用现有的Java类,所以我不能声明我自己的case类。

1 个答案:

答案 0 :(得分:8)

是的!您可以在类型上进行模式匹配,因此如果您对不同的子类型有不同的情况,您可以获得您正在寻找的行为:

trait A
class B extends A
class C extends A

def f(a: A) = a match {
  case b: B => "a B!"
  case c: C => "a C!" 
}

f(new B)  // a B!
f(new C)  // a C!