Я работаю над библиотекой 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
, но получила () -> Unit
.
Есть ли способ включить такую реализацию в Kotlin, не создавая для этого новую функцию?
Я думал о том, чтобы иметь только одну функцию, которая получает () -> Unit
, но тогда это выглядит страннокод Java (Function1
и т. д.).
Спасибо!