【发布时间】:2011-06-04 15:37:00
【问题描述】:
我是 Scala 新手,目前正在从事一个涉及 Java 和 Scala 模块的项目。现在我想使用 byte[] 类型的参数从 Java 调用 Scala 方法。
Scala 方法具有签名:def foo(data: Array[Byte])
Java 调用如下所示:foo(x),其中 x 的类型为 byte[]。
IDE 告诉我这是不可能的:
The method foo(Array) in the type Bar is not applicable for the arguments (byte[])
作为一个附加约束,最好不要更改 Scala 方法。在 Java 方面,我尝试使用 Byte[],但这并没有解决问题。一定存在某种转换?
【问题讨论】:
-
您使用的是什么 IDE? Intellij 对此没有任何问题。
-
您使用的是 2.8 或更高版本吗?
Array[Byte]是byte[]从 2.8 开始,所以如果你的 IDE 抱怨你的 IDE 是错误的。 -
我正在使用 Eclipse Helios 3.6.2 和安装的 Scala IDE for Eclipse 2.0.0-beta4。该项目以 Maven 模块组织,其中 Scala 和 Java 模块都包含 scala-library-2.9.0 作为 Maven 依赖项。我注意到 Scala IDE 有时会做一些奇怪的事情——比如在包资源管理器中显示虚构的警告和错误,但通常清理和重建项目会有所帮助(我已经在这种情况下尝试过)。
-
嗯,这很有趣:使用 x 类型(原始)
scala.Array从 Java 调用foo(x)让我的 IDE 返回:The method foo(byte[]) in the type Bar is not applicable for the arguments (Array)。这就是我所说的矛盾行为。我应该尝试在其他地方编译代码...