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。