如何在isInstanceOf调用中使用结构类型?

标题基本上是这样说的。 有没有办法使用e的类型。 G。
new Object {def foo = "bar"}
isInstanceOf[<structural_type_here>]
电话?     
已邀请:
结构类型不适用于
isInstanceOf
。同样,模式匹配结构类型是没有意义的(它们总是匹配)。 这通常归咎于类型擦除,但即使没有擦除也无法工作,因为JVM不了解结构类型。 另一方面,Scala可以很聪明地通过擦除来进行结构类型检查。     
我想说你可以使用类型别名:
type HasFooMethod = { def foo: String }
val v = new Object {def foo = "bar"}
v.isInstanceOf[HasFooMethod]
但是,由于擦除,这将永远回归真实。 因此,您可以使用反射,或者只是尝试将对象传递给以结构类型作为参数的方法 - 如果编译器无效,编译器将会出错。     

要回复问题请先登录注册