interface Greeting {
void sayHello();
}
public class Main {
public static void main(String[] args) {
Greeting greeting = new Greeting() { // 익명 클래스 사용
@Override
public void sayHello() {
System.out.println("안녕하세요!");
}
};
greeting.sayHello();
}
}
public class Main {
public static void main(String[] args) {
Greeting greeting = () -> System.out.println("안녕하세요!");
greeting.sayHello();
}
}
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<Integer, Integer> square = x -> x * x;
System.out.println(square.apply(5)); // 25 출력
}
}
@FunctionalInterface
interface Calculator {
int operate(int a, int b);
}
public class Main {
public static void main(String[] args) {
Calculator add = (a, b) -> a + b;
System.out.println(add.operate(3, 7)); // 10 출력
}
}
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("홍길동", "김철수", "이영희");
names.stream() // 스트림 생성
.filter(name -> name.startsWith("김")) // 필터링
.forEach(System.out::println); // 출력
}
}
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("홍길동", "김철수", "이영희");
names.forEach(System.out::println); // 메소드 레퍼런스 사용
}
}
1. 람다식은 익명 클래스를 대체하기 위해 등장했지만, 단순한 문법 축소가 아니라 함수형 프로그래밍을 지원하기 위한 기능이다.
2. 람다식을 사용하려면 반드시 단 하나의 추상 메서드를 가진 "함수형 인터페이스"가 필요하고, 이를 명확히 하기 위해 @FunctionalInterface를 사용한다.
3. 람다식은 실무에서 주로 스트림 API와 함께 사용되며, 컬렉션을 다룰 때 강력한 기능을 제공한다.
4. 람다식을 더 간결하게 만들기 위해 메소드 레퍼런스를 활용하면 코드가 더욱 직관적이고 짧아진다.