【发布时间】:2018-06-04 00:35:53
【问题描述】:
@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
}
我收到警告:
警告:(598, 76) Kotlin:超类型中的对应参数 “Fn2”被命名为“a”。这可能会导致调用此函数时出现问题 带有命名参数。
我可以在invoke() 函数定义中使用某种注释或关键字或秘密名称(如it 或_)来消除这些警告。我承认我正在使用 Java/Kotlin 互操作做一些非标准的事情,当我完成重构时可能会消失,但我仍然很好奇。
我知道有一个 @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE") (thank you evilbloodydemon),但我正在寻找一种方法来在我覆盖的函数签名处抑制它,而不是在实现中。
【问题讨论】: