forDevLife
[java] 익명 클래스(anonymous class) 본문
new 조상클래스 혹은 구현 인터페이스 이름() {
//멤버 선언
}
- 말 그대로 이름이 없는 일회용 클래스. 딱 한번 인스턴스 만들고 끝냄
- 이름이 없으므로 조상 / 인터페이스 이름을 쓴다.
- 클래스 정의 + 생성을 동시에 한다.
package com;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Ex14_0 {
public static void main(String[] args) {
Button b = new Button("Start");
b.addActionListener(new EventHandler());
}
}
class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("ActionEvent occured");
}
}
- 기존 코드를 보면, actionPerformed라는 메서드 딱 한번을 사용하기 위해 EventHandler라는 것을 만든다.
- 한번쓰고 말거면 비효율적이라, 이를 익명 클래스로 만든다.
package com;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Ex14_0 {
public static void main(String[] args) {
Button b = new Button("Start");
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("ActionEvent occured");
}
});
}
}
- 위의 규칙 대로, EventHandler라는 클래스 이름 제거 하고,
- 인터페이스 이름을 new로 한 후 중괄호 안에 구현하고자 했던 메서드를 구현!
'Java' 카테고리의 다른 글
[java] import, static import 문 (0) | 2021.06.09 |
---|---|
[java] hashCode(), toString(), equals() (0) | 2021.06.02 |
[java] 디폴트 메서드, static 메서드 (0) | 2021.05.28 |
[자바의정석]Chapter 16. 네트워킹 (0) | 2021.04.19 |
[자바의정석]Chapter 15. 입출력 I/O - 2 (0) | 2021.04.14 |
Comments