簡體   English   中英

在 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()方法。 它返回什么取決於實現類。 在這種情況下,最干凈的如下:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM