如何将Scala数组[Byte]转换为Java byte []?

Sky*_*ker 11 java interop scala language-interoperability

我有一个Akka应用程序,其中的演员用Scala编写,其他用Java编写.在一个案例中,Scala Actor写了一个Array[Byte],我需要从Java Actor反序列化它.在这个用例中,我最终需要Java中的String表示,Array[Byte]这样才能解决我的问题.

斯卡拉演员:

val outputStream = new java.io.ByteArrayOutputStream()
val bufferedOutputStream = new java.io.BufferedOutputStream(outputStream, 1024)
val exitCode : Integer = processBuilder #> bufferedOutputStream !
bufferedOutputStream.flush
val content = outputStream.toByteArray // this gives an Array[Byte]
javaActorRef.tell(content, getSelf())
Run Code Online (Sandbox Code Playgroud)

Java演员:

/**
 * {@inheritDoc}
 */
@Override
public void onReceive(Object object) throws Exception {
    // object has a Scala Array[Byte] how do I convert here to 
    // byte[] or to String?
Run Code Online (Sandbox Code Playgroud)

ser*_*jja 19

Scala Array[Byte]已经是Java了byte[].证明:

object ScalaSide extends Application {
  val a = Array[Byte](1, 2, 3)

  JavaSide.doSmth(a)
}
Run Code Online (Sandbox Code Playgroud)

-

import java.util.Arrays;

public class JavaSide {
    public static void doSmth(Object arr) {
        byte[] b = (byte[]) arr;
        System.out.println(Arrays.toString(b));
    }
} 
Run Code Online (Sandbox Code Playgroud)

结果:

[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

  • 但是如果方法是“void doSmth(byte[] arr)”怎么办?在将“a”传递给方法之前,会对它做什么? (2认同)