值类可用于实现类型安全,而无需拆箱的开销。
我的印象是,在运行时这样的类型/类将“不存在”,被视为简单类型(例如,值类在运行时case class X(i: Int) extends AnyVal
将是简单的)。Int
.toString
但是,如果您确实在值类实例上调用方法,它会打印如下内容:
scala> val myValueClass = X(3)
myValueClass: X = 3
scala> myValueClass.toString
res5: String = X(3)
所以我猜编译器毕竟包含一些信息?