Я работаю над библиотекой Android, которая содержит некоторые представления. Естественно, эти взгляды могут излучать события.
У меня есть интерфейс, который называется (только для целей этого вопроса) Listener
. Если бы я написал библиотеку на Java, все было бы так:
public interface Listener {
void onEvent();
}
public class SomeView extends FrameLayout {
// Some more functions and implementation details
public void setListener(Listener l) { ... }
}
При использовании этого представления в деятельности Kotlin я могу использовать setListener
следующим образом:
someViewInstance.setListener {
// implementation
}
Я хочу написать свою библиотеку на Kotlin, но она может быть использована и в коде Java, поэтому я хочу предоставить и интерфейс для слушателя, как в обычном представлении (как выше), но иметь возможность для кода Kotlin использовать функцию реализация:
interface Listener {
fun onEvent()
}
когда я пытаюсь использовать setListener
как описано выше, в моей тестовой деятельности Kotlin, я получаю ошибку компиляции, говорящую, что функция ожидает тип Listener
но got () → Unit
.
Есть ли способ включить такую реализацию в Kotlin, не создавая для этого новую функцию?
Я думал о том, чтобы иметь только одну функцию, которая получает () → Unit
но потом это выглядело странно в коде Java (Function1
и т.д.).
Спасибо!