728x90
1. 매개 변수가 없는 람다식
실행문이 두 개 이상일 경우 중괄호를 생략할 수 없고, 하나일 경우에만 생략할 수 있다.
2. 매개 변수가 있는 람다식
매개변수 선언 시 타입은 생략할 수있고 타입 대신에 var를 사용할 수도 있다.
매개변수가 하나일 경우에는 중괄호를 생략할 수 있지만 이때는 타입 또는 var를 붙일 수없다.
3. 리턴값이 있는 람다식
return 문 하나만 있을 경우 중괄호와 함께 return 키워드는 생략 가능하다.
리턴값은 연산식 또는 리턴값 있는 메소드 호출로 대체 가능하다.
예제 코드
매개변수가 2개 이상 있고 리턴이 없는 추상 메소드
더보기
public class Lambda04 {
public static void main(String[] args) {
/* 1번 */
MyInterface04_01 myInterface04_01_01 = (int a, int b) -> {
System.out.println("Lambda04.main"); // Lambda04.main
System.out.println(a + b);
};
MyInterface04_01 myInterface04_01_02 = (a, b) -> {
System.out.println(a * b);
};
// 명령문이 한 줄이면 중괄호 생략 가능
MyInterface04_01 myInterface04_01_03 = (a, b) -> System.out.println(a / b);
myInterface04_01_01.method01(10, 12); // 22
myInterface04_01_02.method01(7, 9); // 63
myInterface04_01_03.method01(8, 4); // 2
}
}
interface MyInterface04_01 {
void method01(int a, int b);
}
매개변수가 1개 있고 리턴이 없는 추상 메소드
더보기
public class Lambda04 {
public static void main(String[] args) {
/* 2번 */
MyInterface04_02 myInterface04_02 = a -> {
System.out.println("Lambda04.main"); // Lambda04.main
System.out.println("a = " + a);
};
MyInterface04_02 myInterface04_02_01 = x -> {
System.out.println("x = " + x);
};
myInterface04_02.method02(10); // a = 10
myInterface04_02_01.method02(20); // x = 20
}
}
@FunctionalInterface
interface MyInterface04_02 {
void method02(int a);
}
매개변수가 없고 리턴이 없는 추상 메소드
더보기
public class Lambda04 {
public static void main(String[] args) {
/* 3번 */
MyInterface04_03 myInterface04_03_01 = () -> System.out.println("Lambda04.main");
myInterface04_03_01.method03(); // Lambda04.main
}
}
@FunctionalInterface
interface MyInterface04_03 {
void method03();
}
리턴 있는 추상 메소드
더보기
public class Lambda04 {
public static void main(String[] args) {
/* 4번 */
MyInterface04_04 myInterface04_04_01 = () -> {
System.out.println("statement...");
return 0;
};
MyInterface04_04 myInterface04_04_02 = () -> 0; // 한 줄이면 return 문 생략
myInterface04_04_01.method04(); // statement...
myInterface04_04_02.method04();
}
}
@FunctionalInterface
interface MyInterface04_04 {
int method04();
}
728x90
'IT > Java' 카테고리의 다른 글
[Java] java.base 모듈 (1) | 2024.03.15 |
---|---|
[Java] 메소드 참조(method reference) (0) | 2024.03.15 |
[Java] 람다식(Lambda Expressions) (0) | 2024.03.14 |
[Java] anonymous (0) | 2024.03.13 |
[Java] 중첩 인터페이스 (0) | 2024.03.13 |