vir*_*yes 1 scala runtime class 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 _ => "why?"
}
}
}
val foo = new Foo
foo.who
Run Code Online (Sandbox Code Playgroud)
尝试了一个带有classOf和isAssignableFrom的守卫,以及循环遍历x.getInterfaces(我至少看到_Foo那里),但是在直接"精益"匹配方面没有运气.
这个擦除是"在工作中"还是我错过了一个明显的1-liner?
如果这是许多其他线程的副本,我们可以关闭,但请指出我正确的方向!;-)
谢谢
您应该使用this而不是getClass:
this match {
Run Code Online (Sandbox Code Playgroud)
目前你正在调用getClass(返回Class[T]类型的对象) - 确保java.lang.Class类没有扩展你的_Foo特性 - 这就是" 为什么? "