Lambda 함수형 인터페이스 타입의 매개변수와 반환타입

김도형·2022년 12월 11일
0

1. 참조 변수 없이 직접 `람다식으로 매개변수 지정가능

aMethod( ()-> System.out.println("myMethod()") );

2. 함수형 인터페이스의 추상메서드와 동등한 람다식을 가리키는 참조변수를 반환 or 람다식을 직접 반환 가능

MyFunction myMethod() {
		MyFunction f = ()->{};
		return f; // 이 줄고 ㅏ윗 줄을 한줄로 줄이면, return () -> {};
	}

람다식으로 매개변수 지정하려면, 메서드를 통해 람다식을 주고 받아야함.

간단히, 람다식으로 매개변수 지정하기 위해 메서드가 중간다리의 역할을 함.

아래는

  • 익명 객체의 run 호출
  • 메서드를 사용해서 람다식으로 매개변수 지정 후 run 호출

구분한 그림이다.

@FunctionalInterface
public interface MyFunction2 {
    void run(); // public abstract void run();
}

class LambdaEx1 {
    static void execute(MyFunction2 f){ // 매개변수의 타입이 MyFunction2인 메서드
        f.run();
    }

    static MyFunction2 getMyFunction() { // 반환 타입이 MyFunction2인 메서드
        MyFunction2 f = () -> System.out.println("f3.run()");
        return f;
    }

    public static void main(String[] args) {
        // 람다식으로 MyFunction2의 run() 을 구현
        MyFunction2 f1 = () -> System.out.println("f1.run()");

        MyFunction2 f2 = new MyFunction2() { // 익명클래스로 run()을 구현
            @Override
            public void run() { // public을 반드시 붙여야 함.
                System.out.println("f2.run()");
            }
        };
        f1.run();
        f2.run();

        // execute 라는 메서드를 통해 람다식을 주고 받을 수 있다.
        execute(f1);  // f1.run()
        execute(f2); // f2.run()

        MyFunction2 f3 = getMyFunction();
        f3.run();

        execute( () -> System.out.println("run()") );
    }
}
profile
3년간 웹/앱, 자동제어 QA 🔜 개발자로 전향하여 현재 교육 회사에서 백엔드 개발자로 근무 중입니다.(LinkedIn : https://www.linkedin.com/in/dohyoung-kim-5ab09214b)

0개의 댓글