Вызвать java-метод, который принимает `‹? super T ›` параметр типа из кода Scala?

Я пишу код scalafx, который должен вызывать метод из java:

val txtEditor = new TextArea {
    text = "markdown here"
  }  

txtEditor.text.addListener(new ChangeListener[String] {
    override def stateChanged(e: ChangeEvent): Unit = ???
  })

Но он сообщает об ошибке компиляции по параметру addListener:

Несоответствие типов, ожидаемое: ChangeListener [_>: String], фактическое: ChangeListener с Object {def stateChange (e: ChangeEvent) Unit}

И addListener, который является java-методом:

void addListener(ChangeListener<? super T> listener);

Как это исправить?


person Freewind    schedule 08.05.2014    source источник
comment
ChangeListener согласно docs.oracle.com/javafx/2 / api / javafx / beans / value / отличается от того, что вы использовали. Можете ли вы упомянуть ссылку api для вашего ChangeLsitener?   -  person Jatin    schedule 08.05.2014
comment
Вы вместо этого смотрите на класс Swing?   -  person som-snytt    schedule 08.05.2014
comment
Извините, я неправильно использовал ChangeListener :(   -  person Freewind    schedule 08.05.2014


Ответы (1)


FTR, чтобы ответить на заголовок вопроса.

scala> val is = (1 to 10).to[collection.mutable.LinkedList].asJava
warning: there were 2 deprecation warning(s); re-run with -deprecation for details
is: java.util.List[Int] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

scala> is sort (new java.util.Comparator[Int] { def compare(a: Int, b: Int) = b - a })

scala> is
res13: java.util.List[Int] = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
person som-snytt    schedule 08.05.2014