aMethod( ()-> System.out.println("myMethod()") );
동등한 람다식을 가리키는 참조변수
를 반환 or 람다식
을 직접 반환 가능MyFunction myMethod() {
MyFunction f = ()->{};
return f; // 이 줄고 ㅏ윗 줄을 한줄로 줄이면, return () -> {};
}
메서드
를 통해 람다식을 주고 받아야함.간단히, 람다식으로 매개변수 지정하기 위해 메서드가 중간다리의 역할
을 함.
아래는
구분한 그림이다.
@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()") );
}
}