【发布时间】:2011-05-19 19:47:13
【问题描述】:
scala.math.ScalaNumber 是一个 Java 文件,如下所示:
public abstract class ScalaNumber extends java.lang.Number {
protected abstract boolean isWhole();
public abstract Object underlying();
}
而scala.math.BigDecimal 用以下方式实现它:
class BigDecimal(val bigDecimal: BigDec, val mc: MathContext)
extends ScalaNumber with ScalaNumericConversions with Serializable {
...
def underlying = bigDecimal
}
还有scala.math.BigInt:
class BigInt(val bigInteger: BigInteger) extends ScalaNumber with ScalaNumericConversions with Serializable {
...
def underlying = bigInteger
}
令人困惑的是,underlying 的类型是 java.math.BigDecimal/java.math.BigInt 而不是 Object。
我错过了一些非常明显的东西还是这里有什么特殊情况?
编辑:当然我错过了一些明显的东西......你没事。协变返回类型。谢谢!
【问题讨论】:
标签: math scala numbers biginteger bigdecimal