标记 Kotlin 未使用的参数

我正在定义一些用作回调函数的函数,但并非所有函数都使用了它们的所有参数。

如何标记未使用的参数,以便编译器不会给我有关它们的警告?

48120 次浏览

使用 @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

参见 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 警告,这取决于您。

如果函数是类的一部分,那么可以将包含类 openabstract以及有问题的方法声明为 open

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) {}
}