지금을 사는 사람

[Java] 익명 클래스(Anonymous Class) 본문

Java

[Java] 익명 클래스(Anonymous Class)

지금회 2023. 12. 7. 20:34
728x90

소개:

Java에서는 클래스를 정의하고 객체를 생성하는 데에 있어서 익명 클래스(Anonymous Class)를 사용할 수 있습니다. 익명 클래스는 한 번만 사용되어야 하는 간단한 클래스를 정의하고 인스턴스화하는 편리한 방법을 제공합니다. 이 글에서는 Java 익명 클래스에 대해 알아보고, 사용 예시를 통해 어떻게 활용되는지 살펴보겠습니다.


1. 익명 클래스란?

익명 클래스는 이름이 없는 클래스로, 클래스 정의와 객체 생성을 동시에 처리하는 방법입니다. 주로 인터페이스를 구현하거나 추상 클래스를 확장할 때 사용됩니다.

2. 기본 문법

  • 인터페이스를 구현하는 익명 클래스:
MyInterface myObject = new MyInterface() {
    @Override
    public void myMethod() {
        System.out.println("Implementation of myMethod");
    }
};
  • 추상 클래스를 확장하는 익명 클래스:
AbstractClass myObject = new AbstractClass() {
    @Override
    void abstractMethod() {
        System.out.println("Implementation of abstractMethod");
    }
};

3. 익명 클래스와 이벤트 핸들링

익명 클래스는 GUI 프로그래밍에서 이벤트 핸들링에 특히 유용하게 사용됩니다. 예를 들어, 버튼 클릭 이벤트를 처리하는 경우:

Button myButton = new Button("Click Me");

myButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("Button Clicked!");
    }
});

4. 람다 표현식과의 비교

Java 8부터는 람다 표현식이 등장하여 코드를 더 간결하게 만들어주었습니다. 그렇지만 람다 표현식은 함수형 인터페이스에만 사용할 수 있고, 익명 클래스는 인터페이스나 추상 클래스의 인스턴스를 생성하는 데 더 일반적으로 사용됩니다.

// 람다 표현식을 사용한 버튼 클릭 이벤트 핸들링
myButton.addActionListener(e -> System.out.println("Button Clicked!"));

5. 주의사항

  • 익명 클래스에서 외부의 지역 변수를 참조할 경우 해당 변수는 final이거나 effectively final이어야 합니다.
int count = 0;

Runnable r = new Runnable() {
    @Override
    public void run() {
        System.out.println("Count: " + count); // 이 변수는 final이거나 effectively final이어야 함
    }
};

6. 결론

익명 클래스는 Java에서 간편하게 클래스를 정의하고 객체를 생성하는 방법을 제공합니다. 주로 한 번만 사용되어야 하는 간단한 클래스를 만들 때나 이벤트 핸들링과 같은 상황에서 유용하게 활용됩니다. 람다 표현식이 등장하면서 코드의 간결성 측면에서는 일부 기능이 중복되지만, 여전히 일부 상황에서 익명 클래스는 편리하게 사용될 수 있습니다.

 

728x90

'Java' 카테고리의 다른 글

[Java] 컬렉션 (Collection)  (1) 2023.12.12
[Java] 리터럴 풀 (literal pool)  (0) 2023.12.12
[Java] 람다 표현식(Lambda)  (1) 2023.12.07
[Java] nextLine()과 next()의 차이와 주의사항  (1) 2023.12.06
[Java] 배열  (0) 2023.12.06