Kotlin 内联属性有哪些用例?

2024-01-07

作为属性'getter or setter通常没有函数作为参数,也没有reified https://kotlinlang.org/docs/reference/inline-functions.html#reified-type-parameters类型,使用的好处/用例是什么inline特性?

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

Kotlin 内联属性 https://kotlinlang.org/docs/reference/inline-functions.html#inline-properties-since-11

Eg.

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

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

这是内联属性讨论 https://github.com/Kotlin/KEEP/issues/34:

具体化类型参数示例:

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

另一个用例是从库的二进制接口中隐藏一些属性。在 Kotlin 标准库中,连同@InlineOnly注解这可能使得将来可以从类文件中排除此类属性的声明,从而减少方法数量,这将主要使 Android 受益于 64K 方法的限制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kotlin 内联属性有哪些用例? 的相关文章

随机推荐