gpt4 book ai didi

scala - 奇怪的类型不匹配错误

转载 作者:行者123 更新时间:2023-12-02 00:00:32 26 4
gpt4 key购买 nike

我在 TableView[Error] 中有一个类型为 TableColumn[Error, Boolean] 的表列 errorFixed。我的 Error 类有一个 val fixed: Boolean,我试图将其放入此表列中。

我试过了

errorFixed.cellValueFactory = features => 
ReadOnlyBooleanWrapper(features.value.fixed)

但它失败了

type mismatch;
found : scalafx.beans.property.ReadOnlyBooleanWrapper
required: scalafx.beans.value.ObservableValue[Boolean,Boolean]

我真的不明白 ObservableValue[Boolean,Boolean]ReadOnlyBooleanWrapper 的父类(super class)型 according to the documentation .

如果我自己使用 .asInstanceOf[ObservableValue[Boolean, Boolean]] 转换它似乎有效。这是怎么回事?

Gist with stripped down project to reproduce

最佳答案

简短的回答是:而不是

errorFixed.cellValueFactory = features => 
ReadOnlyBooleanWrapper(features.value.fixed)

你应该使用

errorFixed.cellValueFactory = features => 
ObjectProperty[Boolean](features.value.fixed)

ReadOnlyObjectWrapper[Boolean]

长答案的简短版本:在使用原始 Java 类型(如 boolean 或 int)时,Scala 和 Java 之间存在某些“摩擦”。这种不便体现在 ScalaFX 的属性绑定(bind)中。并非一切都以直观的方式继承。在这种情况下

ReadOnlyBooleanWrapper 

的子类
ObservableValue[scala.Boolean, java.lang.Boolean]

scala.Boolean 不是 java.lang.Boolean 的子类,在 ScalaFX 中这会导致复杂化。有趣的是,转换 .asInstanceOf[ObservableValue[scala.Boolean, scala.Boolean]] 有效,尽管类型参数在编译时不匹配。

感谢您提供完整的代码示例(要点),这确实有助于澄清问题。

关于scala - 奇怪的类型不匹配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21671799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com