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

Yud*_*rya 10 kotlin

由于属性的getter或setter通常不具有作为参数或reified类型的函数,使用inline属性的好处/用例是什么?

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

Kotlin内联属性

例如.

val foo: Foo
    inline get() = Foo()

var bar: Bar
    get() = ...
    inline set(v) { ... }
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 8

这是内联属性讨论:

具体类型参数示例:

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

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