Java/Lambda Expressions
[Lamda Expression] Anonymous Classes -> Lamda Expression
고인돌개발자
2021. 5. 23. 17:54
학습목표 : 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 을 사용하자