Bru*_*una 5 scala equals manifest type-erasure
我很难理解如何使用清单.
这是我的问题:我创建了一个新的参数化类C并试图像这样重写equals:
override def equals(that:Any)=that match{
case that:C[T] => true /*do smth else not relevant*/
case _ => false
}
Run Code Online (Sandbox Code Playgroud)
当然我收到了"警告:类型模式C [T]中的非变量类型参数T未被选中,因为它被擦除".我尝试使用像我在许多其他功能中使用的清单:
override def equals(that:Any)(implicit manifest:Manifest[T])=that match{
case that:C[T] => true
case _ => false
}
Run Code Online (Sandbox Code Playgroud)
但我收到了"错误:方法等于无所事事"的消息.
我不知道如何解决这个问题.有人可以帮帮我吗?
你无法解决它.欢迎来到与java顺利互操作的乐趣.改善等于的唯一方法def equals(x: Any): Boolean是编写不同的方法.
我总是试图说服马丁,我们应该以不同的方式实现== desugaring,目标是"def decentEquals [T](x:T)(隐式等价:Equiv [T])",默认隐含和桥接方法除非你关心,否则它是无缝的,但他认为平等测试不应该变慢.
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |