Переопределить интерфейс Java только с геттерами в 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
}
Есть ли лучшие способы сделать это?
1 ответ
Решение
Контракт должен иметь getCode()
а также getMessage()
только методы. То, что он возвращает, зависит от реализации класса. Самые чистые в этом случае следующие:
class ErrorInfoImpl(
private val code: String,
private val message: String
) : ErrorInfo {
override fun getCode(): String = code
override fun getMessage(): String = message
}