Как сослаться на публичное поле java.awt.Dimension из Kotlin

Возможно ли в Kotlin получить прямой доступ к общедоступному резервному полю, объявленному в классе Java, если у этого класса есть соответствующий геттер для поля? Например, JDKjava.awt.Dimension имеет поля width а также height, которые public, но также есть getWidth() а также getHeight() методы (хотя они возвращают doubles вместо ints, поэтому они не являются строго "соответствующими" геттерами). Вот пример кода:

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

0 ответов

Другие вопросы по тегам