首页 > 解决方案 > scala中的Java类类型不匹配?

问题描述

我正在尝试从中导入Colorjavafx,并在 scala 类中使用它。但是当我在其他地方使用我的课程时,我收到了这个错误:

Error:(9, 50) type mismatch;
 found   : javafx.scene.paint.Color
 required: drawingengine.Color

这是代码:

package drawingengine
import javafx.scene.paint.Color
sealed class Pixel(x: Int, y: Int, color: Color);

我可以通过将第 3 行更改为:

sealed class Pixel(x: Int, y: Int, color: javafx.scene.paint.Color);

但我认为这有点难看,所以没有更好的方法来使用导入的类吗?


另外,我收到此警告

imported `Color' is permanently hidden by definition of object Color in package drawingengine
import javafx.scene.paint.Color

IntelliJ 将导入行显示为灰色,就好像它没有被使用一样。

我可以看到其他人也遇到了同样的问题,但我看不出所示示例如何适用于我正在做的事情。那么我能对这个警告做些什么呢?

标签: javascala

解决方案


Color这意味着您已经在同一个包中定义了自己的类,drawingengine并且它与 JavaFX 冲突。
这个

javafx.scene.paint.Color

修复它,因为您明确使用限定名称。
如果你想同时维护它们,你可以给 JavaFX 取一个别名

import javafx.scene.paint.{Color => FxColor}

并像使用它一样

sealed class Pixel(x: Int, y: Int, color: FxColor);

推荐阅读