[英]Scala getClass match on super class/trait
掛在一個看似簡單的問題上,對於這個問題,有很多信息(要了解當前的現狀到底有太多困難)。
無論如何,這里。
trait _Foo
class Foo Extends _Foo with WhoAmI
trait WhoAmI {
def who = {
getClass match {
case x: _Foo => "should be Foo instance, which extends _Foo"
case _ => "why?"
}
}
}
val foo = new Foo
foo.who
已經嘗試過使用classOf和isAssignableFrom進行后衛,並通過x.getInterfaces進行循環(我至少在其中看到_Foo),但是就直接“精簡”匹配而言沒有運氣。
這是“工作中”擦除還是我缺少明顯的1線?
如果這是許多其他線程的重復,我們可以關閉,但是請向我指出正確的方向! ;-)
謝謝
您應該使用this
而不是getClass
:
this match {
當前,您正在調用getClass
(它返回Class[T]
類型的對象)-確定java.lang.Class
類沒有擴展您的_Foo
特性-這就是“ 為什么? ”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.