💡익명클래스와 람다식 표현 사용법
📘 이름 없이 일회성으로 사용하는 클래스
//인터페이스 부분
public interface Calculator {
int sum(int a, int b);
}//호출 부분 - 익명 클래스
Calculator calculator1 = new Calculator() {
@Override
public int sum(int a, int b) {
return a + b;
}
};
📘 익명클래스를 더 간결하게 표현
//인터페이스 부분
@FunctionalInterface //함수형 인터페이스 선언
public interface Calculator {
int sum(int a, int b);
}// 호출 부분 - 람다식 표현 (a랑 b를 넣으면 a + b 를 반환)
Calculator calculator2 = (a, b) -> a + b;
//출력 예시
int ret2 = calculator2.sum(4, 3); // 매개변수 전달
System.out.println("ret2 :: "+ret2); // ret2 :: 7//익명 클래스 (클래스 파일 만들 필요 없음) -> 다소 지저분
Calculator calculator1 = new Calculator() {
@Override
public int sum(int a, int b) {
return a + b;
}
};
// 람다식 표현 (a랑 b를 넣으면 a+b 를 반환) -> 깔끔
Calculator calculator2 = (a, b) -> a + b;
| 구분 | 익명 클래스 | 람다식 |
|---|---|---|
| 문법 | 클래스를 선언하고, 메서드를 오버라이드 | 메서드 구현부만 작성 |
| 대상 | 인터페이스, 추상 클래스, 일반 클래스 | 함수형 인터페이스만 가능 |
| this 키워드 | 익명 클래스 자기 자신을 가리킴 | 람다식을 감싸고 있는 클래스 참조 |
| 가독성 | 상대적으로 복잡 | 간결하고 직관적 |
| 사용 | 복잡한 다중 메서드 구현시 | 일회성, 간단한 동작(콜백, 이벤트 등) |