当类层次结构中存在原始类型时,为什么 Scala 会抱怨非法继承?

2023-12-04

我正在编写一个采用 Scala 的包装器ObservableBuffer并激发与兼容的事件Eclipse/JFace 数据绑定框架。

在数据绑定框架中,有一个抽象ObservableList装饰一个普通的 Java 列表。我想重用这个基类,但即使这个简单的代码也失败了:

val list = new java.util.ArrayList[Int]
val obsList = new ObservableList(list, null) {}

有错误:

illegal inheritance; anonymous class $anon inherits different type instances of trait Collection: java.util.Collection[E] and java.util.Collection[E]
illegal inheritance; anonymous class $anon inherits different type instances of trait Iterable: java.lang.Iterable[E] and java.lang.Iterable[E]

为什么?它与原始类型有关吗?ObservableList实施IObservableList,它扩展了原始类型java.util.List。这是预期的行为吗?我该如何解决它?


继承层次结构中存在 Java 原始类型会导致此类问题。一种解决方案是编写一点 Java 来修复原始类型,如答案所示Scala 类无法覆盖扩展 java.util.comparator 的 Java 接口中的比较方法

有关为什么原始类型对于 scala 来说是有问题的更多信息,请参阅此错误http://lampsvn.epfl.ch/trac/scala/ticket/1737。该错误有一个使用存在类型的解决方法,该解决方法可能不适用于这种特殊情况,至少在没有大量转换的情况下是这样,因为 java.util.List 类型参数同时位于 co 和 contra 变体位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当类层次结构中存在原始类型时,为什么 Scala 会抱怨非法继承? 的相关文章

  • 如何将模型结果保存到文本文件?

    我正在尝试将从模型生成的频繁项集保存到文本文件中 该代码是 Spark ML 库中 FPGrowth 示例的示例 Using saveAsTextFile直接在模型上写入 RDD 位置而不是实际值 import org apache spa
  • 继承的静态成员的静态初始化

    考虑这个示例代码 public class A
  • Scala:如何将可变参数指定为类型?

    代替 def foo configuration String String 我希望能够写 type Configuration String String def foo configuration Configuration 主要用例是
  • S4 类 [(子集)带有附加参数的继承

    这是一个扩展在 R 中的访问器函数中使用 callNextMethod https stackoverflow com q 24875284 2752888 2017 03 25 更新 为了说明如何仅在加载方法时失败 但在构建的包中时不会失
  • 可选择将项目添加到 Scala 映射

    我正在寻找这个问题的惯用解决方案 我正在构建一个valScala 不可变 Map 并希望有选择地添加一项或多项 val aMap Map key1 gt value1 key2 gt value2 if condition key3 gt
  • 在 Spark MLlib 上使用 Java 中的 Breeze

    在尝试从Java使用MLlib时 使用微风矩阵运算的正确方法是什么 例如scala 中的乘法很简单 matrix vector 相应的功能在Java中是如何表达的 有一些方法 例如 colon times 可以通过正确的方式调用 breez
  • 枚举的子类化

    有没有一种简单的方法来子类化Javaenum 我问这个问题是因为我有大约 10 个实现相同接口的对象 但它们对某些方法也有相同的实现 因此我想通过将所有相同的实现放置在扩展的中间对象中来重用代码Enum它也是我需要的所有其他类的超类 或许事
  • Scala中有类似Java Stream的“peek”操作吗?

    在Java中你可以调用peek x gt println x 在 Stream 上 它将对每个元素执行操作并返回原始流 这与 foreach 不同 foreach 是 Unit Scala 中是否有类似的东西 最好是适用于所有 Monady
  • 解决“Show”类型类实例的隐式问题

    我正在努力使Gender实施Show类型类 scala gt trait Gender extends Show Gender defined trait Gender scala gt case object Male extends G
  • 由于继承抽象类而禁用设计器?

    我有一个项目的解决方案 那个项目中有 40 或 50 种形式 我制作了 4 个基本形式 所有其他形式都可以继承 所有 4 个基本表单都继承 System Windows Forms Form 几乎 90 的形式继承了前 2 个基本形式之一
  • 具有继承类型的 Aux 模式推理失败

    我有一个复杂的玩具算法 我希望纯粹在类型级别上表示 根据饮食要求选择当天菜肴的修改 对卷积表示歉意 但我认为我们需要每一层才能达到我想要使用的最终界面 我的代码有一个问题 如果我们表达一个类型约束Aux 模式生成的类型基于另一个泛型类型 它
  • 从派生模板类调用函数

    我的基类 Element h class Element public Element virtual Element not sure if I need this virtual Element plus const Element v
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • 如何在 sbt 控制台中加载 scala 文件? [复制]

    这个问题在这里已经有答案了 可能的重复 将 Scala 文件加载到解释器中以使用函数 https stackoverflow com questions 7383436 load scala file into interpreter to
  • 获取SettingKey[T]的值

    我正在开发一个用于文档生成的插件 我想将所有生成的文件输出到我选择的目录中 该目录可以是SBT的子目录target目录 如下 val newTargetDirectory SettingKey File document target di
  • 如何将 Java 地图转换为在 Scala 中使用?

    我正在开发一个 Scala 程序 该程序调用 Java 库中的函数 处理结果并生成 CSV 有问题的 Java 函数如下所示 Map
  • Kafka 分区键无法正常工作

    我正在努力解决如何正确使用分区键机制的问题 我的逻辑是设置分区号为3 然后创建三个分区键为 0 1 2 然后使用分区键创建三个KeyedMessage 例如 KeyedMessage 主题 0 消息 KeyedMessage 主题 1 消息
  • Scala 案例类忽略 Spark shell 中的导入

    我希望这个问题有一个明显的答案 我刚刚升级到 Spark v2 0 并且遇到了一个奇怪的问题火花外壳 Scala 2 11 版本 如果我输入以下最小的 Scala import java sql Timestamp case class C
  • 类方法作为构造函数和继承

    问题很简单 如果一个班B继承一个类A并想要重写用作构造函数的 类方法 我猜你称其为 工厂方法 问题是B classmethod会想要重复使用A classmethod 但随后它必须创建类 A 的实例 同时它对类 A 进行子类化 因为作为类方
  • 如何在 Scala 2.11 中查找封闭源文件的名称

    在编译时 如何在 scala 2 11 中检索当前源文件 编写代码的位置 的名称 这是一种实际有效的方法 val srcFile new Exception getStackTrace head getFileName println sr

随机推荐

  • 如何拆分埋藏在历史中的 Git 提交?

    我搞砸了我的历史并想对其进行一些更改 问题是 我有一个包含两个不相关更改的提交 并且该提交被我的本地 非推送 历史记录中的一些其他更改包围 我想在推出之前拆分此提交 但我看到的大多数指南都与拆分您最近的提交或未提交的本地更改有关 对埋藏在历
  • 当 HEAD 请求失败时,Gradle 无法下载依赖项

    我已经在 Gradle 构建脚本中设置了依赖项 该脚本托管在 Bitbucket 上 Gradle 下载失败 并出现错误消息 不能头 https bitbucket org zip 从服务器收到状态代码 403 禁止 我查了一下 似乎是因为
  • 警告:不推荐从字符串文字到“char *”的转换

    在下面的 C 代码中 char type switch mix mode case GO HISTORY VIDEO MIX VISUAL GAS type visual gas break case GO HISTORY VIDEO MI
  • 不同分辨率支持android

    编辑的问题 手机分辨率 我想设计不同的屏幕 dpi 如以下分辨率 320x480 480 800 540x960 720x1280 三星S3 1080x1920 S4 Nexus5 Nexus 5x Moto G4 2560 x 1440
  • 在这种情况下,instanceof 方法的替代方法

    你好 我想知道像这样的东西有什么更优雅的替代品 class Base class A extends Base class B extends Base iterator of colection containing mixed As a
  • R:数字精度,如何防止四舍五入?

    在 R 中 我有以下数字向量 numbers lt c 0 0193738397702257 0 0206218006695066 0 021931558829559 0 023301378178208 0 024728095594751
  • Azure VNET 子网委派

    有人可以帮助解释 Azure 中的子网委托吗 我读过以下文章 但它并没有真正解释任何内容 https learn microsoft com en us azure virtual network subnet delegation ove
  • 将命令按钮添加到 Windows 登录屏幕 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想为 Windows 用户实现自我重置密码功能 当登录屏幕提示时 应向域用户显示忘记密码按钮 该按钮将引导用户进入密码重置向导 所以问题是如何向标准 Windows 登录屏幕添
  • 如果单击子菜单项,请避免关闭菜单

    这是一个多级菜单 当我单击 关于 链接时 它会打开包含 3 个链接 Johnny Julie 和 Jamie 的子菜单 当我再次单击 关于 时 它会关闭菜单 单击子菜单也会关闭菜单 这是我想避免的 如果我单击子菜单 约翰尼 朱莉和杰米 如何
  • Visual Studio 2013 不断崩溃并出现错误 denev.exe [重复]

    这个问题已经存在了 所以我有一台运行 Windows 10 和 Visual Studio Ultimate 2013 的机器 但是每次我启动该程序 它都会在 1 分钟内崩溃 甚至没有移动鼠标 当它崩溃时 它会给出以下错误 devenv e
  • 从 JSON 模式生成 C# 类 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在创建一个 C WCF Web 服务 它以 JSON 格式返回大量数据 客户端是一个iPad应用程序 目前正在由另一个团队开发 所以我正在研究规
  • 罐子不匹配!修复你的依赖关系

    重现步骤 创建一个android项目 MyApp 导入 ActionBarSherlock ABS Directional ViewPager DVP 或任何其他使用 Android 支持库的开源库 将库添加到项目 MyApp 中 控制台日
  • 有什么方法可以获取Java中字符串的大小(以字节为单位)?

    我需要文件中每行的大小 以字节为单位 这样我就可以获得读取的文件的百分比 我已经得到了文件的大小file length 但是如何获得每条线的大小 final String hello str Hello World hello str ge
  • uint 之间的差异可以为负数

    我有一个关于 C C 中无符号整数的问题 它们以及对它们的运算结果应始终为正或等于零 但与 uint16 t 的差异看起来并非如此 uint 在 C 头文件 cstdint 中定义 下一个程序采用 错误 分支 uint16 t beg 7
  • Django 如何知道渲染表单字段的顺序?

    如果我有一个 Django 表单 例如 class ContactForm forms Form subject forms CharField max length 100 message forms CharField sender f
  • Android Studio错误:数据错误循环冗余检查

    我正在开发一个项目 这需要我重新安装最新版本的 Android Studio 安装后 当我打开项目时 我收到此错误 我已经尝试过可用的单一答案 但它不起作用 我正在使用最新版本的 Android Studio 3 1 1 错误 数据错误 循
  • 未找到 Django related_name

    我有这个模型 class Person models Model something employers models ManyToManyField self blank True related name employees 当我做pe
  • Bootstrap 按钮问题:按钮杂乱无章,无法并排放置

    我正在从事一个房地产网站项目 我已经创建了 Photoshop 模板并将其上传到 Behance https www behance net csc103falld848 现在 我正在创建房地产商店模板的静态版本 我面临一个问题 我无法将按
  • PHP DOM 从第一个 ul 元素获取项目

    我有 html 文件 如下所示 ul li item 1 li li item 2 li li item 3 li ul ul li smth 1 2 3 li li another li ul ul li smth 1 2 3 li li
  • 当类层次结构中存在原始类型时,为什么 Scala 会抱怨非法继承?

    我正在编写一个采用 Scala 的包装器ObservableBuffer并激发与兼容的事件Eclipse JFace 数据绑定框架 在数据绑定框架中 有一个抽象ObservableList装饰一个普通的 Java 列表 我想重用这个基类 但