正如标题所述,我正在寻找一种在kotlin界面中实现最终形式(无法重写的方法)的方法。 所以这是我的代码:
interface NewsItemState {
final fun delete(newsItem: NewsItem) {
validateCanDelete(newsItem)
deleteNewsItem(newsItem)
}
fun validateCanDelete(newsItem: NewsItem)
fun deleteNewsItem(newsItem: NewsItem)
}
这是我的用例:
delete
函数为final
,以便不能
在界面的实现中被覆盖。validateCanDelete
和deleteNewsItem
方法将被覆盖
接口的实现。现在,我知道目前尚不可能,并且接口中不允许将final添加到方法中。我也知道我可以通过用抽象类替换接口来实现此目的。
但是,我想知道是否存在一种在接口中实现相同功能的方法,因为我的final
方法不会具有任何“状态管理”逻辑。
答案 0 :(得分:4)
虽然在接口中不可能有final方法,但是绝对可以为接口类型定义扩展方法。
interface NewsItemState {
fun validateCanDelete(newsItem: NewsItem)
fun deleteNewsItem(newsItem: NewsItem)
}
fun NewsItemState.delete(newsItem: NewsItem) {
validateCanDelete(newsItem)
deleteNewsItem(newsItem)
}