api翻译AnyVal

abstract class AnyVal extends Any
AnyVal是所有类型的根类型,它描述值没有作为对象在底层主机系统中的实现,值类型被详细的在Scala语言的12.2节中描述
标准的实施包括9个AnyVal的子类型
scala.Double,scala.Float,scala.Long,scala.Int,scala.Char,scala.Short和scala.Byte是数字类型
scala.Unit和scala.Boolean是非数字类型
其他分组
子范围有scala.Byte,scala.Short,scala.Char
整数类型包括scala.Int和scala.Long
浮点数类型包括scala.Float和scala.Double

此前scala2.10,AnyVal作为一个私密的特质,从scala2.10开始,然而,可以定义一个AnyVal的子类,称为有编译器经过特殊处理的用户值的类,正确的定义用户值类提供了一种方法通过与静态方法调用替换虚拟方法调用和避免无效类型被调用来改善在运行时用户定义类型的执行。

用户定义值类型避免对象分配
必须有一个单一val参数表示在底层运行时
可以定义defs但是没有vals,vars,或者嵌套特质、类和对象
通常除了AnyVal没有扩张其他特质
不可以在类型测试或模式匹配中使用
可能没有重载equals或者hashCode方法

一个小例子
class Wrapper(val underlying:Int) extends AnyVal{
def foo :Wrapper = new Wrapper(underlying *19)
}

重要的是注意,用户定义值类是有限的,而且在某些情况下,还必须在运行是分配一个值类型的实例,这些限制和情况更详细的在值类手册以及SIP-15中说明:值类,scala的改进建议

AnyVal.scala
线性超类型
Any
已知子类
ArrowAssoc, Boolean, Byte, Char, Double, DoubleMult, DurationDouble, DurationInt, DurationLong, Ensuring, Float, Int,IntMult, Long, LongMult, MergeableEither, Ops, Ops, RichBoolean, RichByte, RichChar, RichDouble, RichException,RichFloat, RichInt, RichLong, RichShort, Short, StringAdd, StringFormat, StringFormat, StringOps, Tuple2Zipped,Tuple3Zipped, Unit, any2stringadd, ofBoolean, ofByte, ofChar, ofDouble, ofFloat, ofInt, ofLong, ofRef, ofShort, ofUnit
类型层次

Any

AnyVal


46种类或者特质


实例构造
new AnyVal()


值成员

def getClass():Class[_ <AnyVal]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值