학습목표 : Anonymous Classes 예제를 람다식으로 풀어서 사용 할 수 있다.
람다 기본 문법
인터페이스자료형 객체명 = (parameter) -> 함수식
함수식이 하나일때는 한줄에 가능
함수식이 하나 이상일때는 -> { }; 로 처리해야 함.
이전과정 Anonymous Classes 를 Lamda 식으로 변환
변환 코드
package team.study._lamda;
public class HelloWorldLamda {
/* Lamda 는 하나의 메서드만 허용 */
@FunctionalInterface
interface HelloWorld {
public void greet();
}
/* Lamda 는 하나의 메서드만 허용 */
@FunctionalInterface
interface HelloWorld2 {
public void greetSomeone(String someone);
}
public void sayHello() {
/* 전통적인 인터페이스 구현체 */
class EnglishGreeting implements HelloWorld {
String name = "Hello";
public void greet() {
System.out.printf("%s world - Lamda \n",name);
}
}
HelloWorld englishGreeting = new EnglishGreeting();
/* 익명 클래스 사용 -> Lamda 식으로 */
HelloWorld frenchGreeting = () -> {
String name = "tout le monde - Lamda";
System.out.println(name);
};
/* 익명 클래스 사용 */
HelloWorld2 spanishGreeting = (String someone) -> {
String name = someone;
System.out.printf("Hola, %s , Lamda \n", name);
};
/* 인터페이스 구현체 실행 */
englishGreeting.greet();
/* 익명클래스 실행 */
frenchGreeting.greet();
/* 익명클래스 실행 */
spanishGreeting.greetSomeone("Ronaldo");
}
public static void main(String... args) {
HelloWorldLamda myApp =
new HelloWorldLamda();
myApp.sayHello();
}
}
주의사항
lamda 는 인터페이스에 하나 이상의 메서드를 갖지 못한다. 반드시 하나만 사용 가능하다.
가독성을 위해 어노테이션 @FunctionalInterface 을 사용하자
'Java > Lambda Expressions' 카테고리의 다른 글
예제로 배워보기 - 람다 & MethodReference(더블콜론) (1) (0) | 2021.07.18 |
---|---|
예제로 배워보기 - 람다(1) (0) | 2021.07.17 |
[표준 API] 함수적 인터페이스 : @FunctionalInterface (0) | 2021.05.23 |
[Anonymous Classes] 람다가 있기전 익명클래스가 있었다. (0) | 2021.05.23 |
[Lambda Expressions] 소개 (0) | 2021.05.23 |