如何将Java字节数组转换为Scala字节数组?

mts*_*tsz 9 java scala bytearray

我是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[])
Run Code Online (Sandbox Code Playgroud)

作为附加约束,不优选更改Scala方法.在Java方面,我尝试使用Byte[],但这并没有解决问题.必须存在一些转换?

mts*_*tsz 5

正如其他人指出的,转换没有问题。我的 IDE 表现错误,并显示虚构的错误,但编译时没有问题。此时,以下代码中主方法中的 receive 方法的调用被标记为错误:

ScalaByteReceiver 类型的 receive(Array) 方法引用了缺失的 Array 类型

但是这段代码举例说明了我的问题,可以很好地编译并产生预期的结果:

爪哇:

The method receive(Array) from the type ScalaByteReceiver refers to the missing type Array

斯卡拉:

package stackOverflow;

public class JavaByteSender {    
    public static void main(String... args) {
    new ScalaByteReceiver().receive(new byte[4]);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以 Java 和 Scala 很好地理解了彼此。