在 Kotlin 中仅使用 getter 覆盖 Java 接口

Override Java interface with only getters in Kotlin

我在Java中有这个界面:

public interface ErrorInfo {
  String getCode();
  String getMessage();
}

我希望它在 Kotlin 代码中覆盖。我好像做不到。

这是我尝试过的:

在这里,我得到一个错误 '<field> overrides nothing'

class ErrorInfoImpl(
  override val code: String,
  override val message: String
) : ErrorInfo

在这里,我得到了同样的错误'<field> overrides nothing'

class ErrorInfoImpl(
  code: String,
  message: String
) : ErrorInfo {
   override val code: String = code
   override val message: String message
}

此代码有效,但看起来很脏:

class ErrorInfoImpl(
  private val __code: String,
  private val __message: String
) : ErrorInfo {
    override fun getCode(): String = __code
    override fun getMessage(): String = __message
}

有更好的方法吗?

合同只有 getCode()getMessage() 方法。 returns 取决于实施 class。本例中最干净的如下:

class ErrorInfoImpl(
  private val code: String,
  private val message: String
) : ErrorInfo {
    override fun getCode(): String = code
    override fun getMessage(): String = message
}