首页 > 解决方案 > 正确地制定常数的条件?

问题描述

我的项目中有一个常数,它代表了一些时间跨度。当它低于 0 时,我想禁用与时间跨度相关的检查。

通常会检查

if(CONSTANT > 0) foo();
else bar();

但这会导致警告“条件始终为‘假’”或“条件始终为‘真’”,具体取决于常量的值。

有没有办法规避这个警告,以防止另一个开发人员只做那几行?


编辑:我的问题有点太笼统了。对于那个很抱歉。

我有一个计时器,经过一段时间 TIME_FOR_AUTH (常数)后,清除我的模型。这是一种安全措施,会在测试时产生问题。因此,我if(TIME_FOR_AUTH > 0) ...在我的代码中添加了一个检查。

现在我得到了描述的警告。由于 IntelliJ 总是要求我删除这个结构(而且我在这个项目中并不孤单),我想知道在 Java 中是否有一种常见的做法/有可能抑制警告。

标签: javacompiler-warningscompile-time-constant

解决方案


起初,这只是一个警告。

@SuppressWarnings其次,您可以使用注释来抑制警告。对于“始终为真/假”的警告,它将是@SuppressWarnings("ConstantConditions")

代码示例:

package stackoverflow;

public class SuppressWarningsExample {

    @SuppressWarnings("ConstantConditions")
    public static void main(String[] args) {
        final int value = 100;

        if (value > 0)
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}

对于 IntelliJ IDEA,您还可以使用内联// noinspection <InspectionName>注释抑制每个表达式的警告:

// noinspection ConstantConditions
if (value > 0)
    System.out.println("Yes");
else
    System.out.println("No");

推荐阅读