(타입 매개변수,...) -> {처리할 코드들(실행문);...}
(타입 매개변수,...)는 오른쪽 중괄호{} 블록을 실행하기 위해 '필요한 값'을 제공
-> 기호는 매개변수를 이용해서 중괄호{}를 실행한다는 뜻
ex) (a) -> {System.out.println(a);}
매개변수 타입은 런타임 시 대입되는 값에 따라 자동으로 인식될 수 있기 때문에 람다식에서는 매개변수의 타입을 일반적으로 언급하지 않는다.
하나의 매개변수만 있다면 괄호()를 생략할 수 있고, 하나의 실행문만 있다면 중괄호{}도 생략 가능
매개변수가 없다면 람다식에서 매개변수 자리가 없어지므로 빈괄호()를 반드시 사용
인터페이스 변수 = 람다식;
@FunctionalInterface
public static interface RealOperator{/
public int operate(int leftOp, int rightOp);
}
public class T01_LambdaTest {
public static void main(String[] args) {
Runnable인터페이스를 구현한 익명클래스를 이용한 Thread 생성
Thread th1 = new Thread(
new Runnable() {// Runnable인터페이스 @FunctionalInterface => 추상메서드1개 : 아래 run()
// Runnable쓰고 space바 누르고 run() 자동완성
@Override
public void run() {//자동완성 매개변수는 없다
for(int i =0; i<10; i++) {
System.out.println(i);
}
}
}
);
th1.start();
Thread th2 = new Thread(
() -> { // 위에 run()에 매개변수가 없으니까 없다 매개변수가 있는 경우도 있다
for (int i=0; i<=10; i++) {
System.out.println("람다-"+i);
}
}
);
th2.start();
}
}