Могу ли я опустить методы интерфейса, которые я не использую в Котлине?

Что делать, если меня интересует только onSee и не заботятся о других событиях? Могу ли я, по крайней мере, опустить методы, у которых нет возвращаемых значений?

 interface EventHandler { fun onSee() fun onHear() fun onSmell() fun onTouch() fun onAwake() fun onSleep() } fun addEventHandler(handler:EventHandler) { } fun Main() { addEventHandler(object:EventHandler { override fun onSee() { print("I see.") } }) } 

Конечно, вы можете реализовать только один метод интерфейса, все, что вам нужно сделать, – предоставить реализацию по умолчанию для других методов в объявлении интерфейса

 interface EventHandler { fun onSee() fun onHear() { // default implementation} fun onSmell(){ // default implementation} fun onTouch(){ // default implementation} fun onAwake(){ // default implementation} fun onSleep(){ // default implementation} } 

Теперь, когда вы создаете экземпляр этого интерфейса, вам нужно только обеспечить принудительное выполнение для onSee() , остальные необязательны

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

 interface OnSeeEventHandler: EventHandler { override fun onHear() { // default implementation} override fun onSmell(){ // default implementation} override fun onTouch(){ // default implementation} override fun onAwake(){ // default implementation} override fun onSleep(){ // default implementation} } 

И используйте OnSeeEventHandler для предоставления только метода imeplementation метода onSee

Intereting Posts
Android Не удалось создать один или несколько классов Нулевые проверки не вставляются для типа reified, если параметр не является нулевым В чем разница между свойствами и параметрами в Котлине? Как запустить код, если объект имеет значение null? Kotlin: Интерфейс, посредством которого разработчик должен быть классом данных? Статические поля справочного Java-интерфейса в Котлине Как использовать одни и те же конструкторы в разных классах, а также определять конструкторы в интерфейсе? locationManager.getBestProvider возвращает значение null для API 15 (API <23) Восстановить объект в котлине Вызов «супер (прототип)» из Java на открытый класс данных Котлина DTO Слушатель не вызывается, когда запрашивается диалоговое окно «Обновление сервисов Google Play» почему SomeClass :: class – это KClass <SomeClass>, но this :: class – это KClass <out SomeClass> Преобразование Kotlin в Javascript ошибку: "вычесть не является функцией" Вызывается: rx.exceptions.MissingBackpressureException Переопределение функции с дженериками в котлине