목차
- Lambda 정의
- Lambda 구문
- Lambda 예제1 - 람다를 메서드 매개변수로 바로 전달
- Lambda 예제2 - 람다를 변수에 담아 매서드 매개변수로 전달
- Lambda 예제3 - 메서드 안에서 람다 사용
Lambda 정의
매개변수 받아 값을 반환하는 짧은 익명 표현식 코드 블럭.
1.
Java 8 +
2.
메서드와 비슷하나,
이름 불필요하며 메서드 본문에서 바로 구현 가능.
3.
매개변수는 다수 가능하나,
표현식은 반드시 1개만 가능.
Lambda 구문
※ 3가지 형태 가능.
1. 매개변수 1개 경우.
parameter -> expression
2. 매개변수 2개 이상 시, 소괄호로 묶어야 함.
(parameter1, parameter2) -> expression
3. 복잡한 표현식 경우, 중괄호로 묶을 수 있음.
(parameter1, parameter2) -> { code block }
[매개변수]
1.
매개변수는 1개 이상 가능.
2.
매개변수가 2개 이상 시, 소괄호로 묶어야 함.
[표현식]
1.
값을 즉시 반환해야 함.
2.
아래 것들은 못 가짐.
① 변수
② 할당
③ for, if 같은 구문.
3.
복잡한 연산 위해 중괄호 {} 사용 가능하나.
이 경우엔 return 키워드 사용해 값을 반환.
※ 예제 코드 먼저 보고, 설명 보시기 바람.
Lambda 예제1 - 람다를 메서드 매개변수로 바로 전달
Lambda 표현식은 주로 함수(메서드)의 매개변수로 전달됨.
(예) ArrayList의 forEach()메서드 매개변수로 람다 전달.
Hz.java
import java.util.ArrayList;
public class Hz {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(1);
nums.add(3);
nums.add(5);
nums.add(7);
nums.forEach( (n) -> { System.out.println(n); } );
}
}
결과값:
1
3
5
7
Lambda 예제2 - 람다를 변수에 담아 매서드 매개변수로 전달
[변수에 람다 저장 가능 조건]
1.
변수 값 유형이 1개의 메서드만 있는 형태여야 함.
2.
람다에는 해당 메서드와 동일 개수의 매개변수와 동일 반환 형식이 있어야 함.
PS.
Java엔 위 조건 충족시키는 많은 인터페이스 존재.
(예) java.util 패키지 안의 Consumer 경우, 리스토로 사용.
Hz.java
import java.util.ArrayList;
import java.util.function.Consumer;
public class Hz {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(1);
nums.add(3);
nums.add(5);
nums.add(7);
Consumer<Integer> my = (n) -> { System.out.println(n); };
nums.forEach( my );
}
}
결과값:
1
3
5
7
Lambda 예제3 - 메서드 안에서 람다 사용
[메서드에 람다 사용 조건]
1.
메서드는 단일 메서드 가진 인터페이스를 매개변수로 가져야 함.
2.
인터페이스의 메서드를 호출하면 람다가 실행됨.
Hz.java
interface MyString {
String run(String str);
}
public class Hz {
public static void main(String[] args) {
MyString ko = (s) -> s + " 좋아.";
MyString en = (s) -> s + " 최고";
myPrint("홈짱닷컴", ko);
myPrint("Homzzang.com", en);
}
public static void myPrint(String str, MyString my) {
String result = my.run(str);
System.out.println(result);
}
}
결과값:
홈짱닷컴 좋아.
Homzzang.com 최고
PS. 예제3 작동 메커니즘 음미해보시기 바람.
최신댓글