Kotlin内联属性的用例是什么?

由于属性的gettersetter通常不具有作为参数或具体类型的功能,使用inline属性的好处/用途是什么?

如果好处是减少与方法调用相关的成本,为什么不默认所有属性getter / setter内联?

Kotlin内联属性

例如。

 val foo: Foo inline get() = Foo() var bar: Bar get() = ... inline set(v) { ... } 

这里是内联属性的讨论 :

实体类型参数示例:

 inline val <reified T : PsiElement> T.nextSiblingOfSameType: T? get() = PsiTreeUtil.getNextSiblingOfType(this, T::class.java) 

另一个用例是隐藏库的二进制接口的一些属性。 在Kotlin标准库中,与@InlineOnly注解一起,这可能使得将来有可能从类文件中排除对这些属性的声明,减少方法数量,这对于Android的64K方法限制来说是最有利的。