我正在定义一些用作回调函数的函数,但并非所有函数都使用了它们的所有参数。
如何标记未使用的参数,以便编译器不会给我有关它们的警告?
使用 @Suppress注释可以禁止对任何声明或表达式执行任何诊断。
@Suppress
例子: 取消参数警告:
fun foo(a: Int, @Suppress("UNUSED_PARAMETER") b: Int) = a
取消声明中的所有 UNUSED _ PARAMETER 警告
@Suppress("UNUSED_PARAMETER") fun foo(a: Int, b: Int) { fun bar(c: Int) {} } @Suppress("UNUSED_PARAMETER") class Baz { fun foo(a: Int, b: Int) { fun bar(c: Int) {} } }
Additionally IDEA's intentions(Alt+Enter) can help you to suppress any diagnostics:
如果参数在 lambda 中,可以使用下划线省略它。这将删除未使用的参数警告。如果参数为空并且被标记为非空,它还将阻止 IllegalArgumentException。
IllegalArgumentException
参见 https://kotlinlang.org/docs/reference/lambdas.html#underscore-for-unused-variables-since-11
可以通过在 build.gradle 中添加 kotlin 编译选项标志来禁用这些警告。 要配置单个任务,请使用其名称。示例:
compileKotlin { kotlinOptions.suppressWarnings = true } compileKotlin { kotlinOptions { suppressWarnings = true } }
还可以配置项目中的所有 Kotlin 汇编任务:
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { // ... } }
如果有人在 Android 中使用 kotlin,并希望禁止显示 kotlin 编译器警告,请在 app-module build.gradle 文件中添加以下内容
android{ ....other configurations kotlinOptions { suppressWarnings = true } }
是否真的需要为您的项目禁止所有 kotlin 警告,这取决于您。
如果函数是类的一部分,那么可以将包含类 open或 abstract以及有问题的方法声明为 open。
open
abstract
open class ClassForCallbacks { // no warnings here! open fun methodToBeOverriden(a: Int, b: Boolean) {} }
或者
abstract class ClassForCallbacks { // no warnings here! open fun methodToBeOverriden(a: Int, b: Boolean) {} }