对一个看似简单的问题感到困惑,因为有大量的信息(过多的东西要过去了解当前状态是什么)。
无论如何,这里都是。
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-liner?
如果这是许多其他线程的副本,我们可以关闭,但请指出我正确的方向! ; - )
由于
答案 0 :(得分:5)
您应该使用this
代替getClass
:
this match {
目前您正在调用getClass
(返回Class[T]
类型的对象) - 确保java.lang.Class
类不会扩展您的_Foo
特征 - 这是“为什么?的“