문제
다음 Java 코드의 출력 결과는?
Javapublic class Main { static interface F { int apply(int x) throws Exception; } public static int run(F f) { try { return f.apply(3); } catch (Exception e) { return 7; } } public static void main(String[] args) { F f = (x) -> { if (x > 2) { throw new Exception(); } return x * 2; }; System.out.print(run(f) + run((int n) -> n + 9)); } }
① 12 ② 19 ③ 7 ④ 21
정답
2번
해설
정답: 2. 첫 번째 run(f)는 x=3에서 예외가 발생해 7을 반환하고, 두 번째 run은 3+9=12를 반환하므로 합은 19이다.
오답 풀이
- 1번: 첫 번째 run의 예외 처리 결과 7을 누락했다.
- 2번: 7 + 12 = 19로 맞다.
- 3번: 두 번째 run 결과를 누락했다.
- 4번: 첫 번째 람다의 정상 반환값을 잘못 더한 값이다.
보충 개념 람다식도 함수형 인터페이스의 구현체로 전달될 수 있다. 예외가 발생하면 catch 블록의 반환값이 사용된다.