![](/img/trans.png)
[英]What is the correct way to return booleans from something like an insert function?
[英]What is the correct way to check for null as a function return in Java
請參考下面代碼中的注釋1、2-
在 swift 中,函數可以有一個可選的返回類型,可以在使用 Guard 調用函數時解包。 我很想知道在 Java 中處理此類情況下返回 optional 的正確方法。
static Integer doCalc(Integer num1, Integer num2, char operation) {
switch(operation) {
case 'a':
return num1 + num2;
case 's':
return num1 - num2;
case 'm':
return num1 * num2;
case 'd':
return num2 != 0 ? num1 / num2 : -1; // **COMMENT 1**
default:
System.out.println("not a valid operation. use 'a' 's' 'm' 'd'");
return -1; // **COMMENT 2**
}
}
原始int
(或任何其他原始類型,就此而言)不能為null
。 您可以使用包裝類(在本例中為java.lang.Integer
),並為錯誤輸入返回null
並在有效輸入上返回自動裝箱值:
static Integer doCalc(int num1, int num2, char operation) {
switch(operation) {
case 'a':
return num1 + num2;
case 's':
return num1 - num2;
case 'm':
return num1 * num2;
case 'd':
return num2 != 0 ? num1 / num2 : null;
default:
System.out.println("not a valid operation. use 'a' 's' 'm' 'd'");
return null;
}
}
處理此問題的正確方法是在操作無效時拋出IllegalArgumentException
並在嘗試除以零時拋出ArithmeticException
。
通常你會拋出一個異常。 例如。
static int doCalc(int num1, int num2, char operation) {
switch(operation) {
case 'a':
return num1 + num2;
case 's':
return num1 - num2;
case 'm':
return num1 * num2;
case 'd':
if (num2 == 0) {
throw new IllegalArgumentException("cannot divide by zero");
}
return num1 / num2;
default:
throw new IllegalArgumentException("not a valid operation. use 'a' 's' 'm' 'd'");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.