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