【问题标题】:Scala: Use multiple constructors from Java in ScalaScala:在 Scala 中使用来自 Java 的多个构造函数
【发布时间】:2013-08-20 23:31:21
【问题描述】:

我想在 Scala 中使用一个 Jar,它是用 Java 编写的。

有些类有多个构造函数,例如:

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])

Scala 告诉我 “对重载定义的模糊引用”

如果我使用

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

一切正常。 所以我认为对于第一个变量声明,Scala 不知道他应该使用哪个构造函数,因为它们彼此相似。如何使用只有 2 个输入的构造函数而不是添加第三个输入。

感谢您的帮助!

【问题讨论】:

  • 还有LabeledDock的构造函数吗?
  • 是的,还有几个构造函数。如果我使用的构造函数只有 2 个参数并且类似于另一个构造函数(关于输入参数),问题总是会发生
  • 你能给出一个完整的构造函数列表吗?

标签: java scala constructor


【解决方案1】:

现在,在同事的帮助下,我已经解决了这个问题。

代替

classOf[Button]

我必须使用

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

这样就可以正常工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2013-09-08
    相关资源
    最近更新 更多