如何修复 Kotlin 中的过载分辨率歧义(无 lambda)?

2022-09-02 13:35:17

我在以下行中遇到过载分辨率歧义错误:

departureHourChoice!!.selectionModel.select(currentHourIndex)

参考资料:

  • departureHourChoice是一个 ,它来自ChoiceBox<Int>java.scene.control

  • currentHourIndex是一个Int

  • 方法中发生过载解析歧义;它是重载的,可以接受两种参数:或 。.select()(T obj)(int index)

  • 该方法允许选择 中的项,并且您可以通过引用该项或其索引来确定可以选择哪个项。在这种情况下,我希望它通过索引()选择。.select()ChoiceBoxint

  • 这是错误的照片enter image description here

如何解决过载分辨率歧义?


答案 1

似乎您被此错误击中,作为解决方法,您可以:

  • 框 :currentHourIndex

    lateinit var departureHourChoice: ChoiceBox<Int>
    ...
    val currentHourIndex = 1
    departureHourChoice.selectionModel.select(currentHourIndex as Int?)
    
  • 或更改声明 to use 而不是 Kotlin 的:ChoiceBoxjava.lang.IntegerInt

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

延伸阅读:


答案 2

尝试投射到 :Int

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

推荐