Реализовать интерфейс Kotlin в другом файле - PullRequest
0 голосов
/ 15 февраля 2019

Я хотел бы реализовать некоторые методы интерфейса в другом файле, используя расширения.

У меня такое ощущение, что это невозможно, но я бы хотел это сделать.

Возможно ли это?

Вот идея:

MyClass.kt

class MyClass : MyInterface {

}

MyClassExtension.kt

override MyClass.MyInterface.method1() {
}
override MyClass.MyInterface.method2() {
}

1 Ответ

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

Невозможно реализовать интерфейс в другом файле.Есть еще некоторые возможности.

Вы можете разбить свою реализацию на несколько абстрактных классов, например, abstract class A : Interface, abstract class B : A и так далее.Каждый класс может быть в своем собственном файле.

Вторая альтернатива, которая не позволяет реализовать интерфейс, а скорее разделить реализации метода, называется функциями расширения.https://kotlinlang.org/docs/reference/extensions.html

Функции расширения могут получить доступ только к общедоступному API класса.В этом случае функции расширения не могут реализовывать методы интерфейса.

Используйте следующий синтаксис для объявления:

fun MyClass.method2() { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...