java - 正确地制定常数的条件?
问题描述
我的项目中有一个常数,它代表了一些时间跨度。当它低于 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");
推荐阅读
- deep-learning - 在python2.7的anaconda中安装keras冲突
- react-native - ScrollView 中的样式与 contentContainerStyle?
- unity3d - 如何在着色器中获取纹理大小?
- elasticsearch - 带有 DLQ 和 ElasticSearch 的 Kafka 消费者
- c# - 在 BeforeSendRequest 中跳过标头验证
- angular - 在 Angular CLI 应用程序的组件级样式中看不到自定义 Bootstrap 4 断点
- java - java.lang.NoSuchMethodError: org.apache.commons.exec.PumpStreamHandler.setStopTimeout(J)V
- forms - 文件输入上的标签乘法
- reactjs - React-select.Async 不会在 onClick 上加载选项
- javascript - 如何知道文件是实际打开还是关闭?