익명 클래스?
: 이름이 없는 일회용 클래스. 정의와 생성을 동시에 함
→ 조상의 이름을 빌려다가 씀
new 조상클래스이름() {
// 멤버 선언, 클래스 내용
}
또는
new 구현 인터페이스이름() {
// 멤버 선언
}
예시)
class Ex7_17 {
Object iv = new Object() { void method()} };
→ 컴파일 하면, 파일 이름이 외부클래스$1.class
의 형식으로 나옴. 숫자는 1,2,3 ⋯ 증가함.
AWT(JAVA의 윈도우 프로그래밍)을 작성할 때 아래와 같은 코드를 많이 씀
class Ex7 {
public static void main(String[] args) {
Button b = new Button("Start");
b.addActionListener(new EventHandler()); // 2. 객체 생성
}
}
class EventHandler implements ActionListener { // 1. 클래스 정의
public void actionPerformed(ActionEvent e) {
Syetem.out.println("ActionEvent occurred!!");
}
}
⬇︎ 보통 내부클래스로 1회성으로 사용 → 굳이 클래스로 따로 만들기 싫음 → 익명 클래스로 처리 ⬇︎
b.addActionListener(new ActionListener() { // 조상이름
public void actionPerformed(ActionEvent e) { // 원래 클래스 내부와 동일
System.out.println("ActionEvent occurred!!");
}
});
출처
- 자바의 정석 기초편 : ch 7- 51,52