在Kotlin中标记未使用的参数


78

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

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

Answers:


124

使用@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)可以帮助您抑制任何诊断:


1
谢谢。有没有办法将其缩短为[未使用]之类的?我试过了,annotation class unused : suppress("UNUSED_PARAMETER")但是由于压制了最后的决定而没有用。
TheTeaMan

您应该能够省略括号,这样可以节省两个字符:)
Kirill Rakhman 2015年

另外,您可以提取和共享注释参数。
2015年

我的评论适用于现在已删除的旧注释语法,并且不再有效。
Kirill Rakhman

我有带有多个参数的侦听器方法,仅使用了一个。我能够设置@Suppress("UNUSED_PARAMETER")以上方法。因此涵盖了全部四个未使用的三个参数:)
ecth


0

如果函数是类的一部分,则可以将包含类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) {}
}

-5

可以通过在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警告,这取决于您。


21
为什么有人抑制整个项目的警告?这不是一个好习惯。
Xenolion
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.