在 Kotlin 中是否可以直接访问在 Java 类中声明的公共支持字段,如果该类恰好具有该字段的相应 getter?例如,JDKjava.awt.Dimension
有字段width
and height
,它们是public
,但也有getWidth()
andgetHeight()
方法(尽管它们返回double
s 而不是int
s,所以它们不是严格的“对应”getter)。这是一个示例代码:
fun obtainWidth(): Int {
val size = Dimension(1, 2)
return size.width
}
Java 字节码清楚地显示了getWidth()
被调用的方法,然后是一个double
-to-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