Given:
class RateOfInterest {
public static void main(String[] args) {
int rateOfInterest = 0;
String accountType = "LOAN";
switch (accountType) {
case "RD":
rateOfInterest = 5;
break;
case "FD":
rateOfInterest = 10;
break;
default:
assert false : "No interest for this account"; //line n1
}
System.out.println("Rate of interest:" + rateOfInterest);
}
}
and the command:
java -ea RateOfInterest
What is the result?
A.
Rate of interest: 0
B. An AssertionError is thrown.
C.
No interest for this account
D. A compilation error occurs at line n1.
題解
Java的assertion敘述通常用於private方法內,確保傳入方法的參數範圍。當assertion敘述的判斷式為false的時候,就會拋出AssertionError。在執行Java程式的時候,若要啟用assertion敘述的功能,必須要在「java」指令後加上「-ea」或是「-enableassertions」參數來啟用assertion。
在這題的程式中,accountType所參考到的字串均不符合swicth結構中的case項目,因此會執行第22行default的程式。所以第23行的assertion敘述執行的時候,就會拋出AssertionError。