Как сослаться на поле c publi java .awt. Размер от Kotlin - PullRequest
2 голосов
/ 31 января 2020

Можно ли в Kotlin для прямого доступа к PUBLI c Резервное поле, объявленные в Java класса, если этот класс случается иметь соответствующий поглотитель для поля? Например, JDK java.awt.Dimension имеет поля width и height, которые public, но также существуют методы getWidth() и getHeight() (хотя они возвращают double с вместо int с так что они не являются строго «соответствующими» добытчиками). Вот пример кода:

fun obtainWidth(): Int {
    val size = Dimension(1, 2)
    return size.width
}

Байт-код Java четко показывает вызываемый метод getWidth(), за которым следует преобразование double в int:

  public final static obtainWidth()I
   L0
    NEW java/awt/Dimension
    DUP
    ICONST_1
    ICONST_2
    INVOKESPECIAL java/awt/Dimension.<init> (II)V
    ASTORE 0
   L1
    ALOAD 0
    INVOKEVIRTUAL java/awt/Dimension.getWidth ()D
    D2I
    IRETURN

Интересно, что если я заменю width на getWidth(), то код не скомпилируется, требуя явного преобразования.

Я использую Kotlin v1.3.61

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...