Java 기초 정리 - 익명 클래스와 람다식 표현

Zyoon·2025년 4월 15일

Java 기초정리

목록 보기
13/24
post-thumbnail

💡익명클래스와 람다식 표현 사용법


익명클래스


📘 이름 없이 일회성으로 사용하는 클래스

  • 사용예시
    //인터페이스 부분
    public interface Calculator {
        int sum(int a, int b);
    }
    //호출 부분 - 익명 클래스
    Calculator calculator1 = new Calculator() {
    
        @Override
        public int sum(int a, int b) {
            return a + b;
        }
    };
    
    • 별도의 클래스 파일을 만들지 않고 코드 내에서 일회성으로 정의해 사용
    • 주로 인터페이스나 추상 클래스의 메서드를 즉석에서 구현할 때 사용

람다 (Lambda)


📘 익명클래스를 더 간결하게 표현

  • 사용예시
    //인터페이스 부분
    @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 키워드익명 클래스 자기 자신을 가리킴람다식을 감싸고 있는 클래스 참조
    가독성상대적으로 복잡간결하고 직관적
    사용복잡한 다중 메서드 구현시일회성, 간단한 동작(콜백, 이벤트 등)
profile
기어 올라가는 개발

0개의 댓글