1

被一个看似简单的问题所困扰,其中有大量信息(太多信息无法筛选以了解当前状态到底是什么)。

无论如何,这里是。

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

已经尝试了使用classOfisAssignableFrom的守卫,以及循环通过x.getInterfaces(我至少在那里看到 _Foo ),但在直接“精益”匹配方面没有运气。

这个擦除是“在工作”还是我错过了一个明显的 1-liner?

如果这是许多其他线程的重复,我们可以关闭,但请指出我正确的方向!;-)

谢谢

4

1 回答 1

5

您应该使用this而不是getClass

this match {

目前你正在调用getClass(它返回Class[T]类型的对象)——确保java.lang.Class类不会扩展你的_Foo特征——这就是“为什么?

于 2012-04-14T17:55:19.370 回答