我想通过将视图模型从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!")
}
但是,如果我想让包子超越乐趣,我怀疑是抛出异常的好习惯吗?
答案 0 :(得分:1)
API不会拒绝调用该方法。事实证明,通过基类或接口可以使用该类,而他们可能看不到该弃用。
final
关键字可能有助于拒绝在继承者类中重新实现该方法。
您可能在Kotlin中使用了更强的@Deprecated
注释,其级别设置为HIDDEN
,例如
@Deprecated("message", level = DeprecationLevel.HIDDEN)
注释可能使该方法对于IDE不可见,但对于二进制代码仍然可见。
解决问题的最佳方法(但可能太难了)可能是创建专用的类或接口层次结构,原则上没有办法调用您尝试隐藏的方法。