标题基本上就是这么说的。

有没有办法使用e的类型。g. new Object {def foo = "bar"} 在一个 isInstanceOf[<structural_type_here>] 打电话?

有帮助吗?

解决方案

结构类型不会与工作 isInstanceOf.同样,与结构类型的模式匹配是没有意义的(它们总是匹配)。

这通常归咎于类型擦除,但即使在没有擦除的情况下,它也不起作用,因为JVM不理解结构类型。

另一方面,Scala 可以 已经足够聪明,通过擦除使结构类型检查工作。

其他提示

我想说的是您可以使用类型别名: 通用标签

但是,由于删除操作,它始终会返回true。

因此,您可以使用反射,也可以尝试将对象传递给以结构类型作为参数的方法-如果无效,编译器将出错。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top