由于属性的getter或setter通常不具有作为参数或reified类型的函数,使用inline属性的好处/用例是什么?
如果好处是降低与方法调用相关的成本,为什么不默认使所有属性getter/setter内联?
例如.
val foo: Foo
inline get() = Foo()
var bar: Bar
get() = ...
inline set(v) { ... }
Run Code Online (Sandbox Code Playgroud)
这是内联属性讨论:
具体类型参数示例:
Run Code Online (Sandbox Code Playgroud)inline val <reified T : PsiElement> T.nextSiblingOfSameType: T? get() = PsiTreeUtil.getNextSiblingOfType(this, T::class.java)另一个用例是从库的二进制接口隐藏一些属性.在Kotlin标准库中,与
@InlineOnly注释一起,这可能使将来可以从类文件中排除这些属性的声明,减少方法计数,这将大大有利于Android的64K方法限制.
| 归档时间: |
|
| 查看次数: |
1480 次 |
| 最近记录: |