首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Scala的RichInt扩展了Comparable[Int]而不是Comparable[RichInt]?

为什么Scala的RichInt扩展了Comparable[Int]而不是Comparable[RichInt]?
EN

Stack Overflow用户
提问于 2018-03-05 01:39:08
回答 1查看 191关注 0票数 3

为什么Scala的RichInt扩展了Comparable[Int]而不是Comparable[RichInt]

我是斯卡拉的新手。在浏览Scala库代码时,我注意到类RichInt扩展了ScalaNumberProxy[Int]ScalaNumberProxy扩展了OrderedProxyOrderedProxy扩展了OrderedOrdered扩展了java.lang.Comparable。因此,我的理解是RichInt (间接地)扩展了java.lang.Comparable[Int]

我的问题是为什么它不扩展java.lang.Comparable[RichInt]

我提出这个问题的原因是用Java编写这样的代码:

代码语言:javascript
复制
class A implements Comparable<A> {

    @Override

    public int compareTo(A other) {
        //implement the method.
    }
    ....
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-05 02:07:44

首先,我们需要知道RichInt是用来为提供辅助函数的,Int类型的普雷德夫中定义的隐式转换提供。

代码语言:javascript
复制
@inline implicit def intWrapper(x: Int) = new runtime.RichInt(x)

这样你就可以像:

代码语言:javascript
复制
2.doubleValue()
2.shortValue()
...

对于您的问题:为什么不扩展java.lang.ComparableRichInt

因为我们实际上操作的是Int类型,而不是RichInt类型。像这样:

代码语言:javascript
复制
2.compare(3)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49102341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档