我有一个Java类,它记录的东西有这样的方法:
void info(Object message, Object... params);
Run Code Online (Sandbox Code Playgroud)
在Scala中,我创建了一个围绕这样调用的包装器,如下所示:
def info(msg: => String, params: Any*) {
log.info(msg, params);
}
Run Code Online (Sandbox Code Playgroud)
我打电话的时候:
val host = "127.0.0.1"
val port = "1234"
info("Start on {0}:{1}", host, port)
Run Code Online (Sandbox Code Playgroud)
我明白了:
"Started on WrappedArray(127.0.0.1, 1234):{1}"
Run Code Online (Sandbox Code Playgroud)
现在,有没有人现在如何将params转换为可以正确使用的Object []?
我试着这样做:
def info(msg: => String, params: Any*)
log.info(msg, params.toList.toArray);
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
"Started on [Ljava.lang.Object;@14a18d:{1}"
Run Code Online (Sandbox Code Playgroud)
你做的时候会发生类似的事情:
params.asInstanceOf[WrappedArray[Object]].array
Run Code Online (Sandbox Code Playgroud)