- 람다식(Lambda Expressions)을 언어 차원에서 제공
• 람다 계산법에서 사용된 식을 프로그래밍 언어에 접목
• 익명 함수(anonymous function)을 생성하기 위한 식
• 코드가 매우 간결해진다.
• 컬렉션 요소(대용량 데이터)를 필터링 또는 매핑해 쉽게 집계
어떤 인터페이스를 구현할지는 대입되는 인터페이스에 달려있음
public interface MyInterface {
void sayHello();
}
public class MyInterfaceImpl implements MyInterface {
@Override
public void sayHello() {
System.out.println("Hello, MyInterface instance");
}
}
Lambda Expression 정의
1. Interface의 추상메소드로만 사용 가능
2. Interface의 추상메소드가 1개만 있을 경우만 사용 가능
3. lambda expression(람다표현식)으로 생성된 인스턴스는 내부적으로 Interface를 자식 익명객체로 만든것과 동일
4. Lambda expression 예
() -> {System.out.println("Hello, Lambda function MyInterface Instance");}
=> sayHello() 추상메소드를 구현한 것을 표현
. () : method parameter list
.{System.out.println("Hello, Lambda function MyInterface Instance");} => sayHello method의 body를 coding한 것
public class Main {
public static void main(String[] args) {
MyInterfaceImpl mi = new MyInterfaceImpl();
mi.sayHello();
// 인터페이스를 익명객체로 생성하여 사용
MyInterface ma = new MyInterface() {
@Override
public void sayHello() {
System.out.println("Hello, Anonymous MyInterface Intance");
}
};
ma.sayHello();
// Lambda 표기법
MyInterface ml = () -> {System.out.println("Hello, Lambda function MyInterface Instance");};
ml.sayHello();
}
}
@FunctionalInterface
public interface MyFunctionalInterface {
int method(int x, int y);
}
람다표현식 사용 규칙
1. 1. method 본문 내용 코딩을 가능하면 1개 명령어로 coding할 것
=> 추상메소드 body에 있는 명령어가 1개이면 {} 제거 가능fi = () -> System.out.println(); fi.method();
- 추상메소드의 parameter 갯수가 1개이면 () 제거 가능
fi = x -> System.out.println(x*5); fi.method(5);
- 추상메소드의 body가 return 키워드를 포함하여 1개의 명령어로 되어 있으면 {}와 return 키워드 제거 가능
public class MyFunctionalInterfaceEx {
public static void main(String[] args) {
MyFunctionalInterface fi;
fi = (x,y) -> {
int result = x+y;
return result;
};
System.out.println(fi.method(5, 2));
fi = (x,y) -> {return x+y;};
System.out.println(fi.method(5, 2));
fi = (x, y) -> x+y;
System.out.println(fi.method(5, 2));
fi = (x, y) -> sum(x,y);
System.out.println(fi.method(5, 2));
}
public static int sum(int x, int y) {
return (x+y);
}
}
오늘은 굉장히 간단한걸 해서 편안하게 했었던 것 같다. 이제 자바의 기초 강의는 끝났다.
이 이후에는 당분간 코드업 기초 100제롤 풀 예정이다