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 이벤트 처리, 비동기 동작 처리에 매우 자주 활용
  • 인터페이스 + 구현 객체 주입 → 동작 분리와 유연한 구조 가능

📌 정리하자면,
이번 예제는 자바에서 인터페이스를 통한 이벤트 처리 구조의 기초를 보여주는 구조입니다.
로컬 클래스를 통해 일회성 동작을 간단하게 분리할 수 있고,
버튼마다 다른 동작을 지정할 수 있는 유연한 구조를 만들 수 있습니다.