Java/자바 정리
88. 이벤트 처리를 위한 로컬 클래스 구현 – 콜백 메커니즘 만들기
코딩하는냥이
2025. 5. 12. 12:04
반응형
이번 강의에서는 이벤트 처리 방식에서 자주 사용하는 콜백 인터페이스와 로컬 클래스 구조를 학습합니다.
인터페이스를 구현한 로컬 클래스를 생성하여
버튼 클릭 시 동작이 실행되는 구조를 이해하는 것이 핵심입니다.
📦 콜백 인터페이스 포함 클래스 (Button.java)
package ch09.sec06;
public class Button {
public static interface ClickListener {
void onClick();
}
private ClickListener clickListener;
public void setClickListener(ClickListener clickListener) {
this.clickListener = clickListener;
}
public void click() {
this.clickListener.onClick();
}
}
✔ ClickListener는 버튼 클릭 시 호출되는 콜백 인터페이스
✔ setClickListener() 메서드로 이벤트 리스너 등록
✔ click() 호출 시 리스너의 onClick() 실행
📌 실행 클래스 (ButtonExample.java)
package ch09.sec06;
public class ButtonExample {
public static void main(String[] args) {
Button btnOk = new Button();
class OkListener implements Button.ClickListener {
@Override
public void onClick() {
System.out.println("Ok 버튼을 클릭했습니다.");
}
}
btnOk.setClickListener(new OkListener());
btnOk.click();
Button btnCancel = new Button();
class CancelListener implements Button.ClickListener {
@Override
public void onClick() {
System.out.println("Cancel 버튼을 클릭했습니다.");
}
}
btnCancel.setClickListener(new CancelListener());
btnCancel.click();
}
}
💻 실행 결과
Ok 버튼을 클릭했습니다.
Cancel 버튼을 클릭했습니다.
💬 코드 설명
- OkListener, CancelListener 는
Button.ClickListener 인터페이스를 구현한 로컬 클래스(Local Class) - 각각 다른 버튼(btnOk, btnCancel) 에 다른 동작을 연결하고 있음
- btn.setClickListener(...) 를 통해
버튼 객체에 클릭 시 동작할 리스너를 주입(inject) - click() 메서드 실행 시 해당 리스너의 onClick() 호출됨
📌 간단 정리
버튼 객체 | 등록된 리스너 클래스 | 클릭 시 동작 출력 |
btnOk | OkListener | "Ok 버튼을 클릭했습니다." |
btnCancel | CancelListener | "Cancel 버튼을 클릭했습니다." |
💡 포인트 정리
- 로컬 클래스는 메서드 내에서 선언되고 해당 블록에서만 사용
- 인터페이스를 구현한 익명/로컬 클래스를 이벤트 리스너로 자주 사용
- 콜백 구조는 UI 이벤트 처리, 비동기 동작 처리에 매우 자주 활용
- 인터페이스 + 구현 객체 주입 → 동작 분리와 유연한 구조 가능
📌 정리하자면,
이번 예제는 자바에서 인터페이스를 통한 이벤트 처리 구조의 기초를 보여주는 구조입니다.
로컬 클래스를 통해 일회성 동작을 간단하게 분리할 수 있고,
버튼마다 다른 동작을 지정할 수 있는 유연한 구조를 만들 수 있습니다.