我有记录的东西其中有这样的方法的Java类:转化Scala的可变参数为Java对象...可变参数
void info(Object message, Object... params);
在Scala中,我创建了身边有这样的呼叫,看起来像一个包装这样的:
def info(msg: => String, params: Any*) {
log.info(msg, params);
}
当我打电话:
val host = "127.0.0.1"
val port = "1234"
info("Start on {0}:{1}", host, port)
我得到:
"Started on WrappedArray(127.0.0.1, 1234):{1}"
现在,有没有人现在如何将PARAMS转换成可以正确使用的Object []?
我试图做的:
def info(msg: => String, params: Any*)
log.info(msg, params.toList.toArray);
}
但是,这并不工作:
"Started on [Ljava.lang.Object;@14a18d:{1}"
类似的事情发生在你:
params.asInstanceOf[WrappedArray[Object]].array
我可以问你'info(“开始于{0}:{1}”,主机,端口)'是怎么变成“127.0.0.1:1234开始的”?它是你的标准RichString的代码吗? – Andrey 2010-02-25 22:58:00
这通过提供给我的一些Java代码进行转换。该格式的方法在http://anonsvn.jboss.org/repos/infinispan/trunk/core/src/main/java/org/infinispan/util/Util.java中称为formatString – 2010-03-03 14:56:20
感谢您的解决方案。你为什么不把它标记为答案? – 2011-10-10 05:38:58