java - 正确地表述常数的条件?

标签 java compiler-warnings compile-time-constant

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

一般情况下会检查

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

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

有没有办法绕过这个警告,以防止另一个开发人员看到这一行?

<小时/> 编辑: 我的问题有点太笼统了。抱歉。

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

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

最佳答案

首先,这只是一个警告。

其次,您可以使用 @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");

关于java - 正确地表述常数的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56610757/

相关文章:

g++ - 如何摆脱g++中的 "inline function used but never defined"警告

c++ - 表达式未评估为常量两级 constexpr 函数(编译器错误?)

f# - 无法在 F# 中创建列表文字

java - 如何将 Spring 配置文件传递给 Jenkins Job 运行的 Spring Boot 应用程序?

java - 不重新显示图像

haskell - GHC 多包版本警告的严重性

C++Builder:<memory> header 中的警告

java - 避免在编译时用文字替换常量引用

java - DAO 和数据传输对象

java - cucumber-jvm 版本 3 将简单表的设计模式替换为 Map<String,String> 操作