자바는 객체 지향 프로그래밍 언어로, 다양한 객체를 생성하고 활용하는 데 강력한 기능을 제공합니다. 그중에서도 익명 객체와 람다식은 매우 유용한 개념입니다. 이 글에서는 익명 객체와 람다식의 정의, 사용법, 그리고 각각의 특징에 대해 알아보겠습니다.
1. 익명 객체 (Anonymous Object)
1.1 익명 객체란?
익명 객체는 이름이 없는 클래스 인스턴스를 의미합니다. 일반적으로 클래스의 인스턴스를 생성할 때는 해당 클래스의 이름을 사용하여 명시적으로 객체를 생성합니다. 그러나 구현 클래스가 매번 달라지거나, 특정 기능을 한 번만 사용하고자 할 때는 익명 객체를 사용할 수 있습니다.
1.2 익명 객체의 사용 예
익명 객체는 인터페이스 타입으로 변수를 선언하고, 해당 변수를 사용하여 구현 객체를 초기화할 때 유용합니다. 익명 클래스를 사용하여 구현 객체를 생성하면 코드의 가독성을 높이고 불필요한 클래스 선언을 줄일 수 있습니다.
예제 코드
interface Animal {
void sound();
}
public class Main {
public static void main(String[] args) {
Animal dog = new Animal() {
@Override
public void sound() {
System.out.println("Woof!");
}
};
dog.sound(); // 출력: Woof!
}
}
위의 예제에서 Animal
인터페이스를 구현하는 익명 객체를 생성하여 sound()
메서드를 구현했습니다. 이를 통해 dog
변수는 Animal
타입으로 사용되지만, 실제로는 구현 클래스가 필요 없습니다.
1.3 익명 객체의 장점
- 코드 간결성: 불필요한 클래스를 만들지 않고, 필요한 기능만 구현할 수 있어 코드가 더 간결해집니다.
- 캡슐화: 특정 기능을 감싸는 데 유용하여, 외부에서 접근할 필요가 없는 경우에 적합합니다.
2. 람다식 (Lambda Expression)
2.1 람다식이란?
람다식은 자바 8에서 도입된 기능으로, 함수적 인터페이스를 위한 익명 구현 객체를 보다 간편하게 생성할 수 있는 방법입니다. 람다식은 코드를 더 간결하게 작성할 수 있게 해 주며, 특히 이벤트 처리나 콜백 함수의 구현에 유용합니다.
2.2 함수적 인터페이스
함수적 인터페이스란 추상 메서드가 하나만 정의된 인터페이스를 의미합니다. 자바에서 람다식을 사용하기 위해서는 함수적 인터페이스를 정의해야 합니다.
예제 코드
@FunctionalInterface
interface MathOperation {
int operation(int a, int b);
}
위의 예제에서 MathOperation
인터페이스는 하나의 추상 메서드 operation()
을 가지고 있으며, 이를 람다식으로 구현할 수 있습니다.
2.3 람다식의 기본 사용
람다식의 기본 문법은 다음과 같습니다:
(parameters) -> expression
또는
(parameters) -> { statements; }
예제 코드
public class Main {
public static void main(String[] args) {
MathOperation addition = (a, b) -> a + b;
MathOperation subtraction = (a, b) -> a - b;
System.out.println("Addition: " + addition.operation(5, 3)); // 출력: 8
System.out.println("Subtraction: " + subtraction.operation(5, 3)); // 출력: 2
}
}
위의 예제에서 addition
과 subtraction
변수를 통해 람다식을 정의하고, 각각의 수학 연산을 간편하게 수행했습니다.
2.4 람다식의 장점
- 간결함: 코드가 짧아지고 가독성이 향상됩니다.
- 명확성: 코드의 목적을 명확하게 전달하여 유지 보수가 용이해집니다.
- 지연 평가: 람다식을 사용하여 필요할 때만 메서드를 실행하도록 할 수 있습니다.
익명 객체와 람다식은 자바 프로그래밍에서 강력한 도구입니다. 이들을 활용하면 불필요한 코드 작성을 줄이고, 더 직관적인 코드를 작성할 수 있습니다. 특히 이벤트 처리나 일회성 기능을 구현할 때, 익명 객체와 람다식을 통해 코드의 가독성과 유지 보수성을 높일 수 있습니다.
'🗄️ Backend > Java' 카테고리의 다른 글
Java API : 주요 클래스 및 I/O 스트림 사용법 (3) | 2024.10.10 |
---|---|
JAVA 예외 처리(Exception Handling)와 가비지 컬렉션 (Garbage Collection) (1) | 2024.10.10 |
JAVA 패키지와 객체지향 개념 정리 (0) | 2024.10.10 |
JAVA 메서드와 객체지향 프로그래밍 (0) | 2024.10.10 |
JAVA 배열과 제어문(반복문) 정리 (0) | 2024.10.10 |