Kotlin类实现Java接口错误

hhg*_*hhg 4 java implementation interface class kotlin

我有一个Java接口

public interface SampleInterface extends Serializable {
    Long getId();
    void setId(Long id);
}
Run Code Online (Sandbox Code Playgroud)

和应该实现它的Kotlin类

open class ClazzImpl() : SampleInterface

private val id: Unit? = null

fun getId(): Long? {
    return null
}

fun setId(id: Long?) {

}
Run Code Online (Sandbox Code Playgroud)

但是我得到一个编译错误:

类ClazzImpl不是抽象的,并且没有实现抽象成员public abstract fun setId(id:Long!):在com .... SampleInterface中定义的单元

任何想法有什么问题吗?

Bob*_*Bob 6

Egor和tynn的其他答案很重要,但是您在问题中提到的错误与他们的答案无关。

您必须先添加花括号。

open class ClazzImpl() : SampleInterface {

  private val id: Unit? = null

  fun getId(): Long? {
    return null
  }

  fun setId(id: Long?) {

  } 

}
Run Code Online (Sandbox Code Playgroud)

如果添加花括号,该错误将消失,但您将收到一个新错误,如下所示:

“ getId”隐藏超型“ SampleInterface”的成员,并且需要“ override”修饰符

现在,如其他答案中所建议,您必须向函数添加override修饰符:

open class ClazzImpl() : SampleInterface {

      private val id: Unit? = null

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

      override fun setId(id: Long?) {

      } 

}
Run Code Online (Sandbox Code Playgroud)