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

在scala中进行子类化和输入

发布时间:2020-12-16 10:02:19 所属栏目:安全 来源:网络整理
导读:我在 Scala中正确输入时遇到问题 – 我想做类似这样的事情,在类层次结构上强加Ordered,但是使用子类允许compare方法只使用它们自己类型的参数 abstract class Parent extends Orderedclass A extends Parent { override def compare(that : A) = 1}class B e
我在 Scala中正确输入时遇到问题 – 我想做类似这样的事情,在类层次结构上强加Ordered,但是使用子类允许compare方法只使用它们自己类型的参数

abstract class Parent extends Ordered
class A extends Parent {
  override def compare(that : A) = 1
}
class B extends Parent {
  override def compare(that : B) = 1
}

下面的工作,但后来我永远被迫永远强加父类及其子类的类型特异性.这只是一个正确推理的噩梦.

abstract class Parent[T <: Parent[_]] extends Ordered[T]
class A extends Parent[A] {
  override def compare(that : A) = 1
}
class B extends Parent[A] {
  override def compare(that : B) = 1
}

是否有一种更简单的方法来强制在Ordered [T]的子类上使用类型?

解决方法

为什么不呢

abstract class Parent
class A extends Parent with Ordered[A] {...}
class B extends Parent with Ordered[B] {...}

正如其他人所指出的那样,根据你的比较标准,不会对一系列父母进行排序,因为它的子类不具有可比性.只有它的子类是Ordered,所以在那里实现特征.

(编辑:李大同)

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

    推荐文章
      热点阅读