我正在定义一些用作回调的函数,但并非所有函数都使用其所有参数。
如何标记未使用的参数,以便编译器不会向我发出有关它们的警告?
Answers:
使用@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) {}
}
}
另外,IDEA的意图(Alt + Enter)可以帮助您抑制任何诊断:
@Suppress("UNUSED_PARAMETER")
以上方法。因此涵盖了全部四个未使用的三个参数:)
如果参数在lambda中,则可以使用下划线将其忽略。这将删除未使用的参数警告。IllegalArgumentException
在参数为空并且被标记为非空的情况下,这也将防止。
参见https://kotlinlang.org/docs/reference/lambdas.html#underscore-for-unused-variables-since-11
如果函数是类的一部分,则可以将包含类open
或abstract
令人反感的方法声明为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) {}
}
可以通过在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警告,这取决于您。
annotation class unused : suppress("UNUSED_PARAMETER")
但是由于压制了最后的决定而没有用。