我在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
}