在Kotlin中仅使用getter重写Java接口

在Kotlin中仅使用getter重写Java接口,java,kotlin,overriding,kotlin-java-interop,Java,Kotlin,Overriding,Kotlin Java Interop,我有一个Java接口: 公共接口错误信息{ 字符串getCode(); 字符串getMessage(); } 我希望它在Kotlin代码中重写。我似乎做不到 以下是我尝试过的: 在这里,我得到一个错误,“不覆盖任何内容” class ErrorInfoImpl( override val code: String, override val message: String ) : ErrorInfo class ErrorInfoImpl( code: String, mes

我有一个Java接口:

公共接口错误信息{
字符串getCode();
字符串getMessage();
}
我希望它在Kotlin代码中重写。我似乎做不到

以下是我尝试过的:

在这里,我得到一个错误,
“不覆盖任何内容”

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

在这里,我得到了相同的错误
“不覆盖任何内容”

class ErrorInfoImpl(
  override val code: String,
  override val message: String
) : ErrorInfo
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()
方法。它返回什么取决于实现类。在这种情况下,最干净的是:

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

如果您需要在Kotlin中实现许多这样的类,您可能希望引入您自己的Kotlin接口,它扩展了Java接口,以便稍微更改契约,例如,
interface KotlinErrorInfo:ErrorInfo{val\u code:String;val\u message:String;override fun getCode()=\u code;override fun getMessage()=\u message}
。这样,实现类可以如下所示:
class ErrorInfoImpl(override val\u code:String,override val\u message:String):KotlinErrorInfo
。。。