【问题标题】:Warning: Unreachable code, Unused equals expression in Kotlin警告:无法访问的代码,Kotlin 中未使用的等于表达式
【发布时间】:2021-08-27 05:11:17
【问题描述】:

这是我的代码,我不喜欢警告。 currentFlag.inc() 正在发出警告:无法访问的代码,if(currentFlag == 1) 正在发出警告:未使用的等于表达式

private fun processGather() {
        TODO("process Gather implemented")
        currentFlag.inc() 

        if (currentFlag == 1) { 
            this.binding.ivStep1.setImageDrawable(AppCompatResources.getDrawable(this, R.drawable.step2))
        } 
    }

【问题讨论】:

    标签: android kotlin unreachable-code


    【解决方案1】:

    您可能误用了TODOTODO 这样做:

    总是抛出 NotImplementedError 说明操作未实现。

    它旨在用作您尚未实现的函数的占位符返回值。在您的情况下,// TODO 评论似乎更合适。

    如果您确实打算将NotImplementedError 扔在那里,并且仍想使警告静音,则可以将Suppress 注释应用于文件或周围的方法:

    @file:Suppress("UNREACHABLE_CODE", "UnusedEquals")
    // or
    @Suppress("UNREACHABLE_CODE", "UnusedEquals")
    private fun processGather() {
    

    注意TODO的返回类型是Nothing,这告诉编译器它永远不会返回(它总是会抛出异常)。正因为如此,可以分析出TODO调用之后的一切都不会被执行。因此,“无法访问的代码”。

    可能是因为这个无法访问的代码,它也会触发“未使用的相等表达式”检查,原因是“因为它无法访问,所以它没有被使用”。这也可能是无意的,因为在我看来,只有无法访问的代码检查应该触发。

    【讨论】:

      【解决方案2】:

      TODO 方法总是会抛出 NotImplemented 错误。由于 TODO 是您方法中的第一行,因此执行永远无法到达 TODO 方法调用下面的后续行。与在 JAVA 中(导致编译错误的地方)不同,在 kotlin 中无法访问的代码将在编译器期间导致警告。为避免这种情况,只需在 TODO 方法调用下方注释代码

      【讨论】:

        猜你喜欢
        • 2015-08-02
        • 2023-03-13
        • 2015-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-28
        • 2011-01-17
        相关资源
        最近更新 更多