web-dev-qa-db-fra.com

Comment réparer l'ambiguïté de la résolution de surcharge dans Kotlin (no lambda)?

Je rencontre une erreur d’ambiguïté de résolution de surcharge dans cette ligne:

departureHourChoice!!.selectionModel.select(currentHourIndex)

Pour référence:

  • departureHourChoice est un ChoiceBox<Int>, qui provient de Java.scene.control

  • currentHourIndex est une Int

  • L'ambiguïté de la résolution de surcharge se produit dans la méthode .select(); Il est surchargé et peut accepter deux types de paramètres: (T obj) ou (int index).

  • La méthode .select() permet de sélectionner un élément dans une ChoiceBox et vous pouvez déterminer celui qui peut être sélectionné en référençant cet élément ou son index. Dans ce cas, je souhaite qu'il soit sélectionné par Index (int).

  • Voici une photo de l'erreur  enter image description here

Comment pourrait-on résoudre l'ambiguïté de la résolution de surcharge?

10
Berry

Il semble que vous soyez touché par ce bogue pour contourner ce problème, vous pouvez:

  • encadrer la currentHourIndex:

    lateinit var departureHourChoice: ChoiceBox<Int>
    ...
    val currentHourIndex = 1
    departureHourChoice.selectionModel.select(currentHourIndex as Int?)
    
  • ou changez la déclaration de ChoiceBox pour utiliser Java.lang.Integer au lieu de Int de Kotlin:

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

Lectures complémentaires:

9
miensol

Essayez d'incarner à Int:

departureHourChoice!!.selectionModel.select(currentHourIndex as Int)
0
voddan

La solution pour moi dans une situation similaire consiste à définir dans votre importation, par exemple: Import kotlin.math.sqrt as kotsqrt

puis utilisez comme: val a = kotsqrt (2.3)

0
Rowan Gontier