Kotlin @FunctionalInterface компилируется с несколькими абстрактными методами - PullRequest
0 голосов
/ 04 февраля 2019

При попытке скомпилировать Java @FunctionalInterface с использованием более 1 неабстрактного метода возникает ошибка компиляции.

Однако при выполнении того же в Kotlin никаких ошибок или предупреждений не возникает, т. Е.следующий Kotlin interface успешно компилируется:

@FunctionalInterface
interface Foo {
    fun foo()
    fun foo(params: Map<String, String>)
}

Это предполагаемое поведение или ошибка в компиляторе Kotlin?

Обратите внимание, что сгенерированный байт-код для приведенного выше фрагмента Kotlin эквивалентенследующий фрагмент кода Java (который - правильно - не компилируется):

@FunctionalInterface
// metadata omitted
public interface Foo {
   void foo();
   void foo(@NotNull Map var1);
}

1 Ответ

0 голосов
/ 11 февраля 2019

Issue KT-25512 был отправлен в систему отслеживания проблем JetBrains (другим пользователем), чтобы сообщить о том, что компилятор ведет себя неправильно, когда @FunctionalInterface применяется к интерфейсу не-SAM, и по состоянию на 10Фев 2019 г. Проблема по-прежнему открыта без активности.

...