살아가는 이야기
Java 익명 클래스 본문
언제부터인가 Java에 익명 클래스(anonymous class)가 생겼다. 이벤트 리스너(listener)를 등록할 때 자주 사용되는데, 예제 파일을 하나 첨부한다.
import javax.swing.*;
import java.awt.event.*;
@SuppressWarnings("serial")
public class HelloFrame extends JFrame {
public HelloFrame() {
setTitle("Hello Frame");
setSize(300,200);
setLocation(100, 200);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
JFrame f = new HelloFrame();
f.setVisible(true);
}
}
익명 클래스를 사용하지 않을 경우에는 파란색 부분에 대한 클래스를 별도로 작성해야 한다. 즉 아래 프로그램처럼 작성해야 한다.
import javax.swing.*;
import java.awt.event.*;
@SuppressWarnings("serial")
public class HelloFrame extends JFrame {
class Terminator extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public HelloFrame() {
setTitle("Hello Frame");
setSize(300,200);
setLocation(100, 200);
addWindowListener(new Terminator());
}
public static void main(String[] args) {
JFrame f = new HelloFrame();
f.setVisible(true);
}
}
익명 클래스를 사용해도 소스코드는 딱 한 줄만 줄어들 뿐이지만 Terminator라는 클래스 이름을 만들지 않아도 되니 편리하다고 할 수 있다.