我想关闭适配器中的覆盖方法。解决的好习惯吗?

时间:2019-02-25 11:52:12

标签: android kotlin android-recyclerview android-adapter

我想通过将视图模型从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!")
    }

但是,如果我想让包子超越乐趣,我怀疑是抛出异常的好习惯吗?

1 个答案:

答案 0 :(得分:1)

API不会拒绝调用该方法。事实证明,通过基类或接口可以使用该类,而他们可能看不到该弃用。 final关键字可能有助于拒绝在继承者类中重新实现该方法。

您可能在Kotlin中使用了更强的@Deprecated注释,其级别设置为HIDDEN,例如

@Deprecated("message", level = DeprecationLevel.HIDDEN)

注释可能使该方法对于IDE不可见,但对于二进制代码仍然可见。

解决问题的最佳方法(但可能太难了)可能是创建专用的类或接口层次结构,原则上没有办法调用您尝试隐藏的方法。