我有記錄的東西其中有這樣的方法的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