我想在Scala中使用用Java编写的构造函数。

构造函数以这种方式声明:

public <SUBCLASS extends Node> NodeDock(Parent<? super Node> parent, Class<SUBCLASS> cls, LookupCriteria<SUBCLASS>[] criteria) {
   this(parent, cls, 0, criteria);
}


因此,如果我想使用它:

val task = new NodeDock(scene.asParent(), classOf[FXTaskStackElement].asInstanceOf[Class[_]], new LookupCriteria[FXTaskStackElement]() {...}


Scala总是给我一个错误,他无法使用这些参数找到合适的构造函数。
那么,如何获取LookupCriteria的FXTaskStackElement的SUBCLASS?

编辑:
在Java中,我会这样称呼该构造函数,效果很好:

task = new NodeDock(scene.asParent(), FXTaskStackElement.class, new LookupCriteria<FXTaskStackElement>() {...})

最佳答案

为什么使用classOf[FXTaskStackElement].asInstanceOf[Class[_]]而不是classOf[FXTaskStackElement]?由于第二个参数是Class[_],因此没有合适的SUBCLASS

关于java - Scala:在Scala中将Java构造函数与子类一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18375684/

10-13 01:58