我想通过从recyclerview
到我的fragment
的绑定视图模型来改进我的adapter
列表适配器。
所以我的新recyclerview
适配器通过订阅视图模型更新数据。
现在我需要关闭提交列表override
乐趣。因为我不需要通过adapter
更新fragment
。要更新数据,我使用绑定视图模型。
我的解决方案是:
@Deprecated("use vm instead", ReplaceWith("throw RuntimeException(\"Calling from fragment is deprecated!\")"))
override fun submitList(data: MutableList<InvitedGuyVo>?) {
throw RuntimeException("Calling from fragment is deprecated!")
}
但是,如果我想要包裹覆盖乐趣,我怀疑是抛出异常的好习惯吗?
API不会拒绝调用该方法。可能会发现类通过基类或接口使用,他们可能看不到弃用。 final
关键字可能有助于拒绝在继承者类中重新实现该方法。
您可以在Kotlin中使用更强的@Deprecated
注释,其级别设置为HIDDEN
,例如
@Deprecated("message", level = DeprecationLevel.HIDDEN)
注释可能是IDE不可见的方法,但对二进制代码仍然可见。
解决问题的最佳方法,但可能是太难的方法,可能是创建一个专用的类或接口层次结构,原则上无法调用您试图隐藏的方法。