Kotlin @Suppress 的取值
最近在 Kotlin 中使用 @Suppress
注解时不知道要填入哪些值。查找了一些资料,在这里记录一下。
@Suppress
注解如何使用,这里不再赘述。
@Suppress
注解的取值在 Kotlin 中称为编译器诊断名称。
话不多说,下面直接给出取值来源,目前笔者了解的来源主要有三个:
- Kotlin 编译器支持的诊断名称
- Kotlin 编译器插件扩展的诊断名称
- Java 编译器支持的部分诊断名称
下面对三个取值来源罗列一下:
Kotlin 编译器
Kotlin 编译器内置支持的诊断名称可以在编译器源码中找到,地址如下:
Kotlin 编译器插件
官方的 Kotlin 编译插件有的会扩展诊断名称,举几个例子:
Android Extensions Plugin
NoArg Plugin
Java 编译器
在 Java 中可以使用 @SuppressWarnings
注解,而 Kotlin 中的 @Suppress
注解支持 @SuppressWarnings
注解的部分诊断名称。至于具体支持哪些,没有查到相关资料,只能在实际使用时自己摸索了。
如何使用/找到正确的诊断名称
在实际使用时,如何才能使用/找到正确的诊断名称并给 @Suppress
注解传值呢?下面介绍两种笔者在实际使用过程中总结的经验:
- 根据 IDEA 或 Android Studio 的提示
- 在 Kotlin 编译器内置支持的诊断名称提示信息中搜索
IDEA / AS
如以下代码,编辑器会提示警告信息:
在提示的代码处使用快捷键 ALT + ENTER
打开上下文菜单,选择 Suppress 'SameParameterValue' for parameter message:
最后,代码如下所示,警告信息消失:
搜索 Kotlin 内置诊断名称
如以下代码,编辑器会提示警告信息:
这时候我们记录下提示的信息:"This class shouldn't be used in Kotlin",然后在 DefaultErrorMessages.java 中搜索:
我们可以在 DefaultErrorMessages.java 中搜索到对应的提示信息,其前面的参数就是诊断名称:PLATFORM_CLASS_MAPPED_TO_KOTLIN,把它填入 @Suppress
注解:
当然,对于 PLATFORM_CLASS_MAPPED_TO_KOTLIN
,同样可以使用第一种方式: