我想关闭适配器中的覆盖方法。决心是好的做法吗?

问题描述 投票:0回答:1

我想通过从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!")
    }

但是,如果我想要包裹覆盖乐趣,我怀疑是抛出异常的好习惯吗?

android kotlin android-recyclerview android-adapter
1个回答
1
投票

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

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

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

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

解决问题的最佳方法,但可能是太难的方法,可能是创建一个专用的类或接口层次结构,原则上无法调用您试图隐藏的方法。

© www.soinside.com 2019 - 2024. All rights reserved.