2013-08-20 80 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[_]] 

有了这个,它工作正常。