Question 1
Q1A financial application uses a sealed interface Transaction to represent various payment methods. The interface permits three record classes: CreditCard, BankTransfer, and DigitalWallet. You are writing a method to process these transactions using a switch expression with pattern matching.
public sealed interface Transaction permits CreditCard, BankTransfer, DigitalWallet {}
public record CreditCard(String pan, double amount) implements Transaction {}
public record BankTransfer(String iban, double amount) implements Transaction {}
public record DigitalWallet(String id, double amount) implements Transaction {}
// In a service class:
public String process(Transaction t) {
return switch(t) {
case CreditCard c when c.amount > 1000 -> "High Value CC";
case CreditCard c -> "Standard CC";
case BankTransfer b -> "Bank Transfer";
// Missing case
};
}
Which statement is true regarding the compilation of this code?
Show answer & explanation
Correct answer: B
Switch expressions must be exhaustive. Since Transaction is a sealed interface permitting CreditCard, BankTransfer, and DigitalWallet, all subtypes must be covered. The provided code handles CreditCard (both high value and standard) and BankTransfer, but it fails to handle DigitalWallet, causing a compilation error.