2013-08-20 77 views
2

我想在使用Java編寫的Scala中使用Jar。Scala:在Scala中使用來自Java的多個構造函數

有類,具有多個constructores,例如:

public LabeledDock(Parent<? super Labeled> parent, int index, Class<?> subtype){} 

public LabeledDock(Parent<? super Labeled> parent, Class<?> subtype) 

所以第一個構造具有3個輸入端,所述第二隻2個輸入。

如果我想以這種方式來使用Scala的這些構造函數:

val button = new LabeledDock(scene.asParent(), classOf[Button]) 

斯卡拉告訴我, 「曖昧參考超載定義」

如果我使用

val button = new LabeledDock(scene.asParent(), 0, classOf[Button]) 

一切正常。 所以我認爲與第一個變量聲明斯卡拉不知道他應該使用哪個構造函數,因爲它們彼此相似。我如何使用只有2個輸入的構造函數而不是添加第三個輸入。

感謝您的幫助!

+0

是否還有更多'LabeledDock'的構造函數? – ziggystar

+0

是的,還有幾個構造函數。如果我使用的構造函數只有2個參數,並且與另一個構造函數相似(關於輸入參數),那麼問題總是會發生。 – AKR

+0

您可以給出構造函數的完整列表嗎? – ziggystar

回答

0

現在,在同事的幫助下,我解決了這個問題。

而不是

classOf[Button] 

我必須使用

classOf[Button].asInstanceOf[Class[_]] 

有了這個,它工作正常。