Как сослаться на публичное поле java.awt.Dimension из Kotlin
Возможно ли в Kotlin получить прямой доступ к общедоступному резервному полю, объявленному в классе Java, если у этого класса есть соответствующий геттер для поля? Например, JDKjava.awt.Dimension
имеет поля width
а также height
, которые public
, но также есть getWidth()
а также getHeight()
методы (хотя они возвращают double
s вместо int
s, поэтому они не являются строго "соответствующими" геттерами). Вот пример кода:
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