interface MyInterface {
fun getTheString(): String
}
class MyClass(var theString: String) : MyInterface {
...
}
обычно, когда у меня есть переменная в конструкторе для класса, он создает метод получения и установки для этой переменной.В MyClass
методы getTheString()
и setTheString(String)
существуют, когда не реализуются MyInterface
.
Когда MyClass
реализует MyInterface
, я получаю ошибку:
Случайное переопределение: Следующие объявления имеют одинаковую подпись JVM (getTheString () Ljava / lang / String;):
- public final fun (): строка определена в MyClass
- public abstract fun getTheString (): Строка, определенная в MyClass
У меня также есть ошибка: класс 'MyClass' не является абстрактным и не реализует абстрактный член public abstract fun getTheString (): Строка, определенная в MyInterface.
Поэтому у меня есть несколько вопросов:
- Почему 2 метода получения генерируются с одной и той же сигнатурой JVM, когдареализация интерфейса вместо одного метода получения, генерируемого без реализации интерфейса?
- Почему жалуется, что я не реализовал метод
getTheString()
, когда этот метод автоматически генерируется kotlin? - Какможно получить геттер, сгенерированный переменной, чтобы он стал реализацией метода в интерфейсе?