如何让编译器识别自定义函数返回true时Android SDK版本≥R
解决方案
你可以通过Android官方提供的@ChecksSdkIntAtLeast注解实现需求,该注解专门用于标记SDK版本校验函数,让编译器能识别函数返回值对应的SDK等级条件,且不会限制函数的调用SDK版本。
步骤1:确保依赖注解库
绝大多数Android项目默认已引入AndroidX Annotation库,若缺失可在模块级build.gradle中添加依赖:
dependencies { implementation "androidx.annotation:annotation:1.7.1" }
步骤2:给目标函数添加注解
修改你的工具类代码,给USE_WINDOW_INSETS()方法添加注解并指定对应的API等级:
object Setup { @androidx.annotation.ChecksSdkIntAtLeast(api = Build.VERSION_CODES.R) fun USE_WINDOW_INSETS(): Boolean = Build.VERSION.SDK_INT >= Build.VERSION_CODES.R }
实现效果
添加注解后即可直接使用你期望的写法,编译器会自动完成条件绑定:
if (SetupProvider.get().USE_WINDOW_INSETS())代码块内,编译器默认识别SDK版本≥R,调用R以上的API不会报等级警告- else代码块内,编译器默认识别SDK版本<R
完全不需要再额外写重复的SDK版本判断逻辑。
内容的提问来源于stack exchange,提问作者prom85
相关产品推荐
相关产品推荐

