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
->此
。。。