반응형
Anonymous Function
- 이름이 없는 함수
- 주로 람다식으로 표현됨
- 일회성으로 사용되는 경우가 많음 -> 메모리 관리에 효과적
- 코드의 간결성을 높이고, 특정 함수의 구현을 간단하게 표현할 수 있게 해줌
특징
- 이름 없음 : 직접적으로 호출할 수 없음. 변수에 할당하거나 다른 함수의 인자로 전달하여 사용
- 간결함 : 함수의 정의를 간단하게 작성할 수 있어 코드가 더 깔끔해짐
- 일회성 사용 : 주로 특정한 작업을 위해 한 번만 사용되는 경우가 많아, 별도의 메소드로 정의할 필요가 없을 때 유용
- 상태 캡슐화 : 정의된 위치의 변수를 캡슐화하여 사용할 수 있음. 클로저(Closure)와 같은 개념 활용 가능
1. 익명 함수를 사용하지 않은 경우
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// 익명 함수를 사용하지 않으면 메소드로 구현해야 함
printNames(names);
}
public static void printNames(List<String> names) {
for (String name : names) {
System.out.println(name);
}
}
}
2. 익명 함수를 사용하는 경우
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
// 익명 함수(람다 표현식) 사용
names.forEach(name -> System.out.println(name));
}
}
- name -> System.out.println(name)부분이 익명함수(forEach의 메소드의 인자로 사용되는 부분이 익명함수인 것)
- name : 매개변수(forEach 메소드가 names 리스트의 각 요소를 이 매개변수로 전달하는 것)
- -> : 람다 연산자. 왼쪽이 매개변수, 오른쪽이 실행할 코드 블럭
- System.out.println(name) : 실행할 코드 블럭
반응형
'JAVA' 카테고리의 다른 글
[JAVA] 리플렉션(Reflection) 완벽 가이드 : 개념, 사용 이유, 활용, 단점 (0) | 2025.02.13 |
---|---|
[JAVA] 스레드 안전(Thread-safe) 완벽 가이드 : 동기화, 원자적 연산, 락을 통한 동기화 (1) | 2025.02.10 |
[JAVA] 동기와 비동기(Synchronous / Asynchronous) 완벽 가이드 : 실행 방식, 대기 여부, 복잡성 필교 (1) | 2025.02.03 |
Iterator, for문과의 차이 (1) | 2025.01.26 |
Generic(제네릭) (0) | 2025.01.22 |