Scala 使用构造函数和伴随对象扩展类

Scala 使用构造函数和伴随对象扩展类,scala,Scala,我想扩展下面的课程和同伴 object MyData { // code inside } class MyData(val data: Struct) extends AnyVal { // code inside } 但是在执行此操作时,从值获取非法继承错误 class MyDataExtended(override val data: Struct) extends MyData(data) 摘自: 在Scala 2.10之前,AnyVal是一种封闭的特性。从Scala 2.10开始,

我想扩展下面的课程和同伴

object MyData { // code inside }
class MyData(val data: Struct) extends AnyVal { // code inside }
但是在执行此操作时,从值获取
非法继承
错误

class MyDataExtended(override val data: Struct) extends MyData(data)
摘自:

在Scala 2.10之前,
AnyVal
是一种封闭的特性。从Scala 2.10开始, 但是,可以定义名为“用户定义值类”的
AnyVal
的子类 这是由编译器专门处理的。正确定义的用户值类提供了一种 通过避免在运行时分配对象以及 用静态方法调用替换虚拟方法调用

局限性 值类目前有几个限制,部分原因是JVM本身不支持值类的概念。有关值类的实现及其限制的详细信息,请参见SIP-15

限制概述
  • 必须只有一个主构造函数,且该构造函数只有一个类型不是值类的公共val参数。(在Scala 2.11.0中,参数可以是非公共的。)

  • 可能没有专门的类型参数

  • 可能没有嵌套或本地类、特征或对象

  • 不能定义equals或hashCode方法

  • 必须是顶级类或静态可访问对象的成员

  • 只能将DEF作为成员。特别是,它不能将惰性VAL、VAR或VAL作为成员

  • 不能由其他类扩展