如何在isInstanceOf调用中使用结构类型?
-
27-10-2019 - |
题
标题基本上就是这么说的。
有没有办法使用e的类型。g. new Object {def foo = "bar"}
在一个 isInstanceOf[<structural_type_here>]
打电话?
解决方案
结构类型不会与工作 isInstanceOf
.同样,与结构类型的模式匹配是没有意义的(它们总是匹配)。
这通常归咎于类型擦除,但即使在没有擦除的情况下,它也不起作用,因为JVM不理解结构类型。
另一方面,Scala 可以 已经足够聪明,通过擦除使结构类型检查工作。
其他提示
我想说的是您可以使用类型别名: 通用标签
但是,由于删除操作,它始终会返回true。
因此,您可以使用反射,也可以尝试将对象传递给以结构类型作为参数的方法-如果无效,编译器将出错。
不隶属于 StackOverflow