250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 네트워크
- HashMap
- java
- 접근 제어자
- types
- 접근제어자
- 혼공
- 혼공학습단
- 혼공자바
- noncluster index
- 혼공컴운
- 인프런
- entrySet
- Proxy Object
- dotnet
- 나도코딩
- Wildcard
- Spring Data JPA
- 인터페이스
- literal
- 오블완
- 스프링 부트 3
- Functional Interfaces
- Access Modifier
- Interface
- 0 시작
- Lazy loading
- cluster index
- 티스토리챌린지
- 자율학습
Archives
- Today
- Total
지금을 사는 사람
[Java] 익명 클래스(Anonymous Class) 본문
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 |