可以在Java中使用什么语句来表示变量的缺失值.例如,我想写一个代码:
if (a>=23)
income = pay_rate;
else
income is missing;
Run Code Online (Sandbox Code Playgroud)
mis*_*tor 14
这个帖子中有很多不好的建议.首先让我解释为什么你不应该采取一些建议的方法.
1.使用包装器类型和null
Integer income = null;
if (a >= 23) {
income = payRate;
}
Run Code Online (Sandbox Code Playgroud)
Java具有自动拆箱功能.如果你income在Java必须自动拆箱的地方意外使用它会怎么样?编译器无法捕获此错误,您的代码将在运行时爆炸.
其次,收入的"可空性"不属于income类型.因此,程序员在null每次使用时都要小心检查它.如果他忘记执行此检查,编译器将不会抱怨,但您将NullPointerException在运行时获得.
2.使用标记值表示异常情况
int income = Integer.MAX_VALUE;
if (a >= 23) {
income = payRate;
}
Run Code Online (Sandbox Code Playgroud)
这种方法具有方法的第二个缺点null.更糟糕的是,在这种情况下,即使在错误的条件下,计算也将继续进行,而不是抛出异常,因为这Integer.MAX_VALUE是有效的int,导致可能的灾难性后果.
那你该怎么处理呢?
使用以下数据类型:
Maybe(也称为Option)适合该法案.(@Bahribayli已经建议过了.我正在扩展它.)请参阅此处的数据定义.
这就是你如何在你的情况下使用它:
Maybe<Integer> income = Nothing.value();
if (a >= 23) {
income = Just.of(payRate);
}
Run Code Online (Sandbox Code Playgroud)
有一个名为库Java功能是提供这种抽象.如果您对此数据类型的使用有任何疑问,我将很乐意回答.
Integer income = null;
if (a >= 23) {
income = payRate; // underscores are generally considered bad convention in Java
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3454 次 |
| 最近记录: |