확인문제


1. 람다식 특징

람다식에 대한 설명으로 틀린 것은 무엇입니까?

  • ① 람다식은 함수형 인터페이스의 익명 구현 객체를 생성한다.
  • ② 매개변수가 없을 경우 ( ) -> { ... } 형태로 작성한다.
  • (x, y) -> { return x+y; }(x, y) -> x+y로 바꿀 수 있다.
  • @FunctionalInterface가 기술된 인터페이스만 람다식으로 표현이 가능하다.
정답 확인

정답:
해설: @FunctionalInterface 어노테이션이 없더라도, 추상 메소드가 단 하나라면 람다식으로 표현할 수 있습니다. 어노테이션은 실수로 두 개 이상의 메소드를 선언하는 것을 방지하는 안전장치일 뿐입니다.



2. 알맞은 람다식

다음 중 잘못 작성된 람다식은 무엇입니까?

  • a -> a + 3
  • a, b -> a * b
  • x -> System.out.println(x/5)
  • (x, y) -> Math.max(x, y)
정답 확인

정답:
해설: 매개변수가 두 개 이상일 때는 반드시 괄호 ()로 감싸야 합니다. a, b -> a * b (X) -> (a, b) -> a * b (O)



3. 람다식 변환

다음 코드의 빈 곳에 들어갈 적절한 람다식을 작성해보세요.

Thread thread = new Thread(
    ______________________________
);
thread.start();

(요구사항)

  • 작업 스레드가 실행될 때 “작업 스레드가 실행됩니다.”를 3번 출력할 것.
정답 확인

정답 예시:

() -> {
    for(int i=0; i<3; i++) {
        System.out.println("작업 스레드가 실행됩니다.");
    }
}



4. 버튼 클릭 이벤트

버튼을 클릭했을 때 메시지를 출력하도록 빈 곳에 람다식을 작성해보세요.

Button btnOk = new Button();
btnOk.setClickListener( ______________________________ );
btnOk.click();

(요구사항)

  • 출력: “Ok 버튼을 클릭했습니다.”
정답 확인

정답 예시:

() -> System.out.println("Ok 버튼을 클릭했습니다.")



5. 메소드 참조 변환

다음 람다식을 메소드 참조로 변경해보세요.

(1) 정적 메소드 참조

(left, right) -> Math.max(left, right)

변경: __________

(2) 인스턴스 메소드 참조

(a, b) -> a.compareToIgnoreCase(b)

변경: __________

정답 확인

정답:

  1. Math :: max
  2. String :: compareToIgnoreCase
서브목차