2016-08-05 34 views
9

ich in dieser Zeile Überladungsauflösung Mehrdeutigkeit Fehler habe:Wie zu beheben Überladungsauflösung Mehrdeutigkeit in Kotlin (kein Lambda)?

departureHourChoice!!.selectionModel.select(currentHourIndex)

Für Referenz:

  • departureHourChoice ist ein ChoiceBox<Int>, die von java.scene.control

  • currentHourIndex ist ein Int

  • Die Überladungs-Auflösung Mehrdeutigkeit tritt in der .select() Methode auf; Es ist überladen und kann zwei Arten von Parametern akzeptieren: (T obj) oder (int index).

  • Die Methode .select() ermöglicht die Auswahl eines Elements in einer ChoiceBox, und Sie können bestimmen, welche ausgewählt werden kann, indem Sie auf dieses Element oder seinen Index verweisen. In diesem Fall möchte ich, dass es durch den Index (int) ausgewählt wird. Hier

  • ist ein Foto des Fehlers enter image description here

Wie würde man die Überladungsauflösung Mehrdeutigkeit beheben?

Antwort

6

Es scheint, dass Sie von this bug als Behelfslösung getroffen werden, können Sie:

  • Feld der currentHourIndex:

    lateinit var departureHourChoice: ChoiceBox<Int> 
    ... 
    val currentHourIndex = 1 
    departureHourChoice.selectionModel.select(currentHourIndex as Int?) 
    
  • oder Änderungserklärung von ChoiceBox zu verwenden java.lang.Integer statt Kotlin des Int:

    lateinit var departureHourChoice: ChoiceBox<java.lang.Integer> 
    ... 
    val currentHourIndex = 1 
    departureHourChoice.selectionModel.select(currentHourIndex) 
    

Weiterführende Literatur:

0

Versuchen zu Int Casting:

departureHourChoice!!.selectionModel.select(currentHourIndex as Int) 
+1

dies nicht kompiliert, da entweder 'currentHourIndex' ist bereits ein "Int" – miensol