Класс Kotlin, реализующий ошибку интерфейса Java

У меня есть интерфейс Java

public interface SampleInterface extends Serializable { Long getId(); void setId(Long id); } 

и класс Котлина, который должен его реализовать

 open class ClazzImpl() : SampleInterface private val id: Unit? = null fun getId(): Long? { return null } fun setId(id: Long?) { } 

Однако я получаю ошибку компиляции:

Класс ClazzImpl не является абстрактным и не реализует абстрактный член public abstract fun setId (id: Long!): Unit, определенный в com … SampleInterface

любые идеи, что не так?

Другие ответы от Egor и tynn важны, но ошибка, о которой вы упомянули в вопросе, не связана с их ответами.

Сначала вы должны добавить фигурные скобки.

 open class ClazzImpl() : SampleInterface { private val id: Unit? = null fun getId(): Long? { return null } fun setId(id: Long?) { } } 

Если вы добавите фигурные скобки, эта ошибка исчезнет, ​​но вы получите новую ошибку:

'getId' скрывает член супертипа 'SampleInterface' и нуждается в модификации 'override'

Теперь, как было предложено в других ответах, вы должны добавить модификатор переопределения к функциям:

 open class ClazzImpl() : SampleInterface { private val id: Unit? = null override fun getId(): Long? { return null } override fun setId(id: Long?) { } } 

Вы должны добавить ключевое слово override перед fun :

 override fun getId(): Long? { return null } override fun setId(id: Long?) { } 

Когда вы реализуете интерфейс внутри Kotlin , вы должны обязательно переопределить методы интерфейса внутри тела класса:

 open class ClazzImpl() : SampleInterface { private var id: Long? = null override fun getId(): Long? { return id } override fun setId(id: Long?) { this.id = id } } 
Intereting Posts
Что такое синтаксис класса <? extends class_name> в kotlin? предупреждение о прерывании kotlin, устаревшее для android Kotlin: «Длина выражения» типа «Int» не может быть вызвана как функция. Функция 'invoke ()' не найдена Как получить доступ к статическому методу Java в подклассе Kotlin? При обработке аннотаций произошла некоторая ошибка (ошибки) Как реализовать модульный модуль для каждого типа номера в Котлине? Комната, проблемы Котлина только с JellyBean lateinitVar не может быть разрешено использовать isInitialized от Kotlin 1.2.10 Невозможно найти сеттер для поля – используя базу данных Kotlin с комнатой RxJava: Что случилось, если я не позвоню? Тесты Kotlin и android lint Синтаксис функции Kotlin Откуда распространяются классы данных Kotlin? Могу ли я увеличить их? Ошибки Kotlin и EasyMock Каков правильный способ установки и семени базы данных с помощью искусственных данных для тестирования интеграции