我在Java中有以下接口(interface):

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
}

有更好的方法可以做到这一点吗?

最佳答案

该契约(Contract)仅具有getCode()getMessage()方法。它返回的内容取决于实现类。在这种情况下,最干净的是:

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

09-16 04:05