Scala getClass在超类/特征上的匹配

Scala getClass在超类/特征上的匹配,class,scala,runtime,parent,match,Class,Scala,Runtime,Parent,Match,在一个显然很简单的问题上挂断了电话,这个问题有大量的信息(太多的信息无法通过筛选来了解当前的状况) 不管怎么说,这都是事实 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 _ => "wh

在一个显然很简单的问题上挂断了电话,这个问题有大量的信息(太多的信息无法通过筛选来了解当前的状况)

不管怎么说,这都是事实

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 match {

当前您正在调用
getClass
(它返回
Class[T]
类型的对象)-确保
java.lang.Class
类不会扩展您的
\u Foo
特性-这就是“为什么?”

您应该使用
this
而不是
getClass

this match {

当前您正在调用
getClass
(它返回
Class[T]
类型的对象)-确保
java.lang.Class
类不会扩展您的
\u Foo
特征-这是“为什么?”

对不起,澄清了问题,以反映我试图确定当前实例是否是\u Foo的子类的位置;也就是说,从另一个特征来看edit@virtualeyes:编辑问题后,我的建议仍然有效:
getClass
->
…抱歉,澄清了问题,以反映我试图确定当前实例是否为_Foo的子类的位置;也就是说,从另一个特征来看edit@virtualeyes:编辑问题后,我的建议仍然有效:
getClass
->
。。。