2013-11-15 106 views
5

是否有可能通過模式匹配來檢測不是案例類的類的子類型?模式匹配沒有案例類

我需要使用現有的Java類,所以我不能聲明我自己的案例類。

回答

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! 
+0

這看起來很好,謝謝!感謝你,我發現它被稱爲「類型匹配」,或類型 - 這裏有更多的信息(http://lampwww.epfl.ch/~emir/bqbase/2006/10/11/typecase.html) – goncalopp

+0

另外,值得一提的是'A'可以是'Object'(或'Any') – goncalopp