Kotlin内联属性的用例是什么?
由于属性的getter或setter通常不具有作为参数或具体类型的功能,使用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方法限制来说是最有利的。