2014-01-10 146 views
1

我有一段Scala代碼:如何將Scala命令行參數傳遞給Java方法?

class A { 
    def main(args: Array[String]) 
} 

然後一塊Java代碼:

class B { 
    public static int test(final String... args) { 
     System.out.println("This is a test."); 
     // Use the arguments 
     ... 
    } 
} 

我想是內a。主叫B.test象下面這樣:

class A { 
    def main(args: Array[String]) = { 
    val result = B.test(args) 
    } 
} 

上述代碼將不起作用,因爲類型不匹配。如果有人能提供一個優雅的解決方案,將不勝感激。

請僅更改Scala部分,因爲Java部分將來自另一個lib。謝謝!

+4

我手邊沒有repl來驗證,但認爲'B.test(args:_ *)'應該可以工作。 – folone

+0

@folone是的,就是這樣! –

+0

我剛剛測試過,它工作。謝謝! – Madwyn

回答

2

作爲每section 4.6.2 of scala language specification,以便在殼體饋送列表/陣列給函數反覆參數(T... args)用java,或與(args: T*)階,參數應該被標記爲經由_*類型註釋的序列參數。

在這種特殊情況下,B.test(args: _*)將工作。

相關問題