Intereting Posts
Доступ к типам параметров внешнего типа Невозможно включить предупреждение «тип платформы объявлений» Kotlin в сообщение об ошибке Способы запутывания доступа к привилегированным частным, но на самом деле публичным членам класса для использования их в встроенных методах Как использовать выражение Lamba, чтобы сделать вызовы метода Java менее подробными в Kotlin? Свойства делегата Kotlin, реализующие функцию оператора «предоставлятьDelegate», но метод никогда не вызывал Создайте экземпляр абстрактного класса в Котлине Есть ли способ ссылаться на класс Java для функции верхнего уровня Kotlin? Каков правильный способ использования расширений Anko Coroutines? Как ввести фабрику переходных зависимостей с Kodein? установить UserDefaultsKeys (swift) в kotlin ArrayBroadcastChannel: второй абонент не обновляет пользовательский интерфейс Как реализовать формулу Стирлинга с BigDecimal и BigInteger в Котлине? Предоставление общего экземпляра в Kotlin & Guice Как можно присвоить значение присваивания _id в Котлин? @Autowired не работает в параметре метода

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

Что делать, если меня интересует только 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