Scala:重写等于擦除的问题等于参数化类的函数
发布时间:2020-12-16 09:59:11 所属栏目:安全 来源:网络整理
导读:我很难理解如何使用清单. 那是我的问题: 我创建了一个新的参数化类C并尝试覆盖这样的equals: override def equals(that:Any)=that match{ case that:C[T] = true /*do smth else not relevant*/ case _ = false} 当然我收到了“警告:类型模式C [T]中的非
我很难理解如何使用清单.
那是我的问题: override def equals(that:Any)=that match{ case that:C[T] => true /*do smth else not relevant*/ case _ => false } 当然我收到了“警告:类型模式C [T]中的非变量类型参数T未被选中,因为它被擦除”.我尝试使用像我在许多其他功能中使用的清单: override def equals(that:Any)(implicit manifest:Manifest[T])=that match{ case that:C[T] => true case _ => false } 但我收到了“错误:方法等于无所事事”的消息. 我不知道如何解决这个问题.有人可以帮帮我吗? 解决方法
你无法解决它.欢迎来到与java顺利互操作的乐趣.从def equals(x:Any)改进equals的唯一方法:Boolean是写一个不同的方法.
我总是试图说服马丁,我们应该以不同的方式实现== desugaring,目标是“def decentEquals [T](x:T)(隐式等价:Equiv [T])”,默认隐含和桥接方法除非你关心,否则它是无缝的,但他认为平等测试不应该变慢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |