加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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]中的非
我很难理解如何使用清单.

那是我的问题:
我创建了一个新的参数化类C并尝试覆盖这样的equals:

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])”,默认隐含和桥接方法除非你关心,否则它是无缝的,但他认为平等测试不应该变慢.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读