람다식
익명 함수를 나타내는 표현식으로,
간결하고 간단한 방식으로 함수를 정의하고 사용할 수 있도록 해줍니다.
람다식의 구성
메서드 명<반환데이터 타입> 변수명 = ( 매개변수 ) → { 수행할 작업 };
람다식 예시 코드
Consummer Interface
// 입력만 받고 출력이 없는 연산만 수행합니다.
public interface MyConsumer<T> {
void accept(T data);
}
- main
MyConsumer<Integer> r1 = (data) -> {
System.out.println("소비할 데이터: " + data);
//return 이 없는 "식"
};
return 값이 없다.
Supplier Interface
// 공급자 | 입력없이 값을 반환 (Return)
@FunctionalInterface // 람다식을 사용할 때 사용하는 어노테이션 (런타임에 확인)
public interface MySupplier<T> {
T get();
}
- main
MySupplier<String> r2 = () -> {
//1. 만약에 오늘 날씨가
//2. 연산
//3. 리턴
return "Good";
};
MySupplier<String> r3 = () -> "Good";
String msg = r3.get();
System.out.println(msg);
//결과: Good 출력됨
매개변수가 없어도 메서드를 실행하면 값을 반환해준다.
Function Interface
// 입력을 받아서 결과를 반환 functionalInterface
public interface MyFunction<T, R> {
R apply(T t);
}
- main
MyFunction<String, String> r4 = (data) -> {
return "안녕하세요.";
};
String result = r4.apply("hi");
System.out.println(result);
// 결과 : 안녕하세요 출력됨
매개변수를 받아서 return을 해준다. (람다표현식)
Predicate Interface
// 입력을 받아서 논리값을 반환
public interface MyPredicate<T> {
boolean apply(T t);
}
- main
MyPredicate<Integer> r5 = integer -> {
return integer / 2 == 0;
};
boolean result5 = r5.apply(3);
System.out.println(result5);
// 결과: false 출력됨
매개변수를 받아서 boolean타입을 반환해준다. 논리
장점과 단점
장점
- 코드가 간결해지고 가독성이 높아진다.
- 익명 객체를 생성하지 않아도 된다.
단점
- 람다식의 로직이 복잡하면 가독성이 떨어질 수 있다.
- 디버깅이 어렵다. → 에러 추적이 복잡해질 수 있다.
Share article