@FunctionalInterface
interface Fn2<A, B, R> : BiFunction<A, B, R>, (A, B) -> R {
@JvmDefault
override operator fun invoke(p1: A, p2: B): R {
...
Когда я реализую этот интерфейс:
object: Fn2<Int,Int,Int> {
override fun invokeEx(accum: Int, i: Int): Int =
accum + i
}
Я получаю предупреждение:
Warning:(598, 76) Kotlin: The corresponding parameter in the supertype 'Fn2' is named 'a'. This may cause problems when calling this function with named arguments.
Есть ли какая-то аннотация, ключевое слово или секретное имя (например, it или _), которое я могу использовать в определении функции invoke(), чтобы избавиться от этих предупреждений. Я признаю, что делаю что-то нестандартное с взаимодействием Java / Kotlin, которое может исчезнуть, когда я закончу рефакторинг, но мне все еще любопытно.
Я знаю, что есть @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE") (спасибо зло), но я ищу способ подавить его в сигнатуре функции, которую я переопределяю, а не в реализации.





Начиная с Kotlin 1.2.40, нет возможности пометить аргумент функции как явно безымянный, и я не знаю о каких-либо планах по добавлению такой возможности.