Java는 콜백을 구현합니다
MS-Windows 및 X Windows 이벤트 중심 디자인 패턴에 익숙한 개발자는 일반적으로 이벤트 소스에 대한 포인터를 전달하고 이벤트가 발생할 때이 방법 ( "콜백"이라고도 함)을 호출합니다. Java의 객체 지향 모델은 현재 방법 포인터를 지원하지 않으며이 편리한 메커니즘을 사용할 수없는 것 같습니다.
Java는 인터페이스를 지원하며 인터페이스를 통해 동일한 콜백을 구현할 수 있습니다. 속임수는 간단한 인터페이스를 정의하고 원하는 인터페이스에 의해 호출되는 메소드를 선언하는 것입니다.
예를 들어, 이벤트가 발생하면 이벤트에 알림을 받으면 인터페이스를 정의 할 수 있습니다.
public interface interviceEvent {// 이것은 단지 일반적인 방법 일뿐입니다. 이것은 매개 변수를 받거나 값을 반환 할 수있는 일반적인 방법입니다. 이런 식으로, 우리는이 인터페이스 클래스 객체를 구현하는 핸들 그립이 있습니다.
이벤트가 발생하면 흥미로운 이벤트 인터페이스를 구현하는 객체를 알리고 activeEvent () 메소드를 호출해야합니다.
클래스 eventnotifier {private mectriceevent, 즉; 개인 부울 무언가가 있습니다. 공개 eventnotifier (흥미로운 이벤트) {IE = 이벤트; Somethinghappened = false; } public void dowork () {
if (something happened) {
// 이벤트가 발생하면이 메소드를 호출하여 인터페이스에 알립니다.
IE.interestingEvent ();
}
}
}이 예에서는 이벤트가 발생하는지 여부를 표시하는 데 SomethingHappened가 사용됩니다.
이벤트 알림을 받기를 원하는 클래스는 흥미로운 이벤트 인터페이스를 구현하고 이벤트 알림에 대한 자체 참조를 전달해야합니다.
공개 클래스 Callme는 흥미로운 {private eventnotifier en; public callme () {// 새 이벤트 알림 객체를 생성하여 en = new eventnotifier (this)로 전달합니다. } // 이벤트가 발생할 때 이벤트를 처리하는 방법을 구현 공개 void mectriceEvent () {//이 이벤트가 발생합니다.}}}.위는 Java에서 콜백 구현을 설명하는 매우 간단한 예입니다.
물론이 이벤트에 관심이있는 여러 개체를 이벤트 관리 또는 이벤트 알림 클래스에 등록 할 수도 있습니다.
1. 인터페이스 흥미로운 이벤트를 정의하고 콜백 메소드 unknownEvent (문자열 이벤트)는 단순히 문자열 매개 변수를 수신합니다.
인터페이스 흥미 진진한 {public void mectriceEvent (문자열 이벤트);}2. 흥미로운 이벤트 인터페이스 및 이벤트 처리 클래스를 구현하십시오
클래스 Callme는 흥미로운 {private String name; public callme (문자열 이름) {this.name = name; } public void mectriceEvent (문자열 이벤트) {System.out.println (name + ": [" + event + "] sence"); }} 3. 이벤트 관리자 또는 이벤트 알림
클래스 eventNotifier {private list <callme> callmes = new arraylist <callme> (); Public Void Regist (Callme Callme) {Callmes.add (Callme); } public void dowork () {for (callme callme : callmes) {callme.interestingEvent ( "샘플 이벤트"); }}}4. 테스트
public class callmetest {public static void main (string [] args) {eventNotifier ren = new EventNoTifier (); callme a = new Callme ( "Callme a"); Callme B = New Callme ( "Callme B"); // regiest ren.regist (a); ren.regist (b); // test ren.dowork (); }}위의 것은 Java 콜백 메커니즘에 대한 소개입니다. 도움이 필요한 학생들은 그것을 언급 할 수 있습니다.