Android Studio Lint检查Kotlin高阶函数
我已经看到下面这个高阶函数的例子被用作一个方便的方法来包装Android API版本检查。
fun isLollipop(func: () -> Unit) { if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { func() } }
但是,在Android Studio 3.0(Kotlin版本1.2.0)中,如果我尝试使用需要Lollipop的API(该项目的minSdk为17),则会看到lint错误。 例如:
isLollipop { appBarLayout.elevation = 4f }
Lint抱怨elevation
属性上的API最小值。
正如一个侧面说明,如果您将函数编写为inline fun
函数,则无关紧要,lint仍会提供相同的警告。 使用内联函数,反编译的Java代码显然被版本检查包围。
我刚才发现了这个讨论,但似乎Kotlin团队已经整合了支持。 https://youtrack.jetbrains.com/issue/KT-7729
lint系统是否支持查看高阶函数?
- Android室库错误:无法findsetter的字段。 (科特林)
- 房间持久性@Relation在Java中工作,但不在Kolin中
- Android – 以下类的超types无法解析 – (Room Persistant Library,Android Library Module)
- 如何在Kotlin中设置非内联OnClickListener?
- 反序列化kotlin数据类android
- 如何实现一个视图的Kotlin函数
- Android studio3.0 kotlin classNotFoundException
- Kotlin的mapTo()会覆盖数组中的数据吗?
- 如何禁用RecyclerView滚动?