如标题所示,我正在寻找一种在kotlin界面中实现最终形式(无法覆盖的方法)的方法。
所以这是我的代码:
interface NewsItemState {
final fun delete(newsItem: NewsItem) {
validateCanDelete(newsItem)
deleteNewsItem(newsItem)
}
fun validateCanDelete(newsItem: NewsItem)
fun deleteNewsItem(newsItem: NewsItem)
}
这是我的用例:
delete
函数为final
,以便不能在接口(interface)的实现中重写。
在其中重写的
validateCanDelete
和deleteNewsItem
方法接口(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)
}