Reputation: 2513
I am defining some functions to be used as callbacks and not all of them use all their parameters.
How can I mark unused parameters so that the compiler won't give me warnings about them?
Upvotes: 139
Views: 61592
Reputation: 6576
If the functions are part of a class you can declare the containing class open
or abstract
and the offending methods as open
.
open class ClassForCallbacks {
// no warnings here!
open fun methodToBeOverriden(a: Int, b: Boolean) {}
}
Or
abstract class ClassForCallbacks {
// no warnings here!
open fun methodToBeOverriden(a: Int, b: Boolean) {}
}
Upvotes: 0
Reputation: 1818
One can disable these warnings by adding a kotlin compile option flag in build.gradle. To configure a single task, use its name. Examples:
compileKotlin {
kotlinOptions.suppressWarnings = true
}
compileKotlin {
kotlinOptions {
suppressWarnings = true
}
}
It is also possible to configure all Kotlin compilation tasks in the project:
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
// ...
}
}
If one is using kotlin in Android and want to suppress kotlin compiler warnings, add below in app-module build.gradle file
android{
....other configurations
kotlinOptions {
suppressWarnings = true
}
}
Whether you really need to suppress all kotlin warning for your project or not, its up to you.
Upvotes: -9
Reputation: 8453
With the @Suppress
annotation You can suppress any diagnostics on any declaration or expression.
Examples: Suppress warning on parameter:
fun foo(a: Int, @Suppress("UNUSED_PARAMETER") b: Int) = a
Suppress all UNUSED_PARAMETER warnings inside declaration
@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:
Upvotes: 215
Reputation: 11565
If your parameter is in a lambda, you can use an underscore to omit it. This removes the unused parameter warnings. It will also prevent IllegalArgumentException
in the case that the parameter was null and was marked non-null.
See https://kotlinlang.org/docs/reference/lambdas.html#underscore-for-unused-variables-since-11
Upvotes: 9