作为物业' getter 或 setter 通常不具备参数和reified类型的功能,使用inline
的好处/用例是什么?属性?
如果好处是降低与方法调用相关的成本,为什么不默认使所有属性getter / setter内联?
EG。
val foo: Foo
inline get() = Foo()
var bar: Bar
get() = ...
inline set(v) { ... }
答案 0 :(得分:7)
以下是内联属性discussion:
具体型参数示例:
inline val <reified T : PsiElement> T.nextSiblingOfSameType: T? get() = PsiTreeUtil.getNextSiblingOfType(this, T::class.java)
另一个用例是从库的二进制接口隐藏一些属性。在Kotlin标准库中,与
@InlineOnly
注释一起,这可能使将来可以从类文件中排除这些属性的声明,减少方法计数,这将大大有利于Android的64K方法限制。