如标题所示,我正在寻找一种在kotlin界面中实现最终形式(无法覆盖的方法)的方法。
所以这是我的代码:

interface NewsItemState {

    final fun delete(newsItem: NewsItem) {
        validateCanDelete(newsItem)
        deleteNewsItem(newsItem)
    }

    fun validateCanDelete(newsItem: NewsItem)
    fun deleteNewsItem(newsItem: NewsItem)
}

这是我的用例:
  • 我希望delete函数为final,以便不能
    在接口(interface)的实现中重写。
  • 我想要
    在其中重写的validateCanDeletedeleteNewsItem方法
    接口(interface)的实现。

  • 现在,我知道目前尚不可能,并且接口(interface)中不允许将final添加到方法中。我也知道我可以通过用抽象类替换接口(interface)来实现。

    但是,我想知道是否可以在接口(interface)中实现相同的功能,因为我的final方法不会具有任何“状态管理”逻辑。

    最佳答案

    虽然在接口(interface)中不可能有final方法,但是绝对可以为接口(interface)类型定义扩展方法。

    interface NewsItemState {
        fun validateCanDelete(newsItem: NewsItem)
        fun deleteNewsItem(newsItem: NewsItem)
    }
    
    fun NewsItemState.delete(newsItem: NewsItem) {
        validateCanDelete(newsItem)
        deleteNewsItem(newsItem)
    }
    

    10-04 14:50