간단 한 예 를 통 해 자바 리 셋 메커니즘 을 설명 하 다.
우선 딴말 을 좀 해라.왜 이 글 을 써 야 합 니까?J.U.C 가방 의 Future Task 소스 코드 를 볼 때 done()방법 이 있 기 때 문 입 니 다.이것 은 추상 적 인 방법 입 니 다.사용자 가 이 를 실현 한 후에 Future Task 는 이 방법 을 실행 한 후에 호출 합 니 다.이것 이 바로 반전 메커니즘 이다.반전 의 사상 은 바로 다음 과 같다.
클래스 A 호출 클래스 B 의 b 방법
4.567917.클래스 B 의 b 방법 이 실행 되 었 습 니 다.주동 적 으로 클래스 A 를 호출 하 는 callback()방법사상 이 너무 추상 적 이어서 저 는 간단 한 실례(간단 하지만 문 제 를 설명 할 수 있 음)를 들 고 자바 가 리 셋 을 실현 하 는 절 차 를 정리 하 겠 습 니 다.
실례 는 이전 해석 이 리 셋 메커니즘 이 무엇 인지 아 는 대답 에 기초 하고 있다.
설명:한 고객 이 한 호텔 에 입 주 했 고 호텔 은 모 닝 콜 서 비 스 를 제공 했다.고객 은 다음날 아침 중요 한 일이 있어 모 닝 콜 서 비 스 를 사용 했다.호텔 직원 들 로 하여 금 다음날 아침 7 시 에 고객 을 깨 우 게 하 다.
이 예 에서 고객 은 A 류,호텔 은 B 류,고객 예약 모 닝 콜 서 비 스 는 A 가 B 의 b 방법 을 호출 한 것 과 같 고 호텔 모 닝 콜 은 B 가 A 의 콜 백 방법(모 닝 콜)을 호출 한 것 과 같다.
다음은 코드 를 드 립 니 다.
1.우선 리 셋 인터페이스:
package callback;
//
public interface CallBack {
public void beWakedUp();
}
2.다음은 고객 류고객 류 리 셋 인터페이스 실현
package callback;
public class Customer implements CallBack {
// ,
private Hotel hotel;
public Customer(Hotel hotel) {
this.hotel = hotel;
}
@Override
public void beWakedUp() {
System.out.println(" ");
}
//
public void bookWakeService() {
hotel.wakeService(this);
}
// get set
}
3.호텔 류
package callback;
public class Hotel {
public void wakeService(CallBack callBack) {
System.out.println(" ");
try {
//
Thread.sleep(3000);
System.out.println(" ");
callBack.beWakedUp();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
4.테스트 주요 클래스
package callback;
public class Main {
public static void main(String[] args) {
Hotel hotel = new Hotel();
Customer customer = new Customer(hotel);
customer.bookWakeService();
}
}
출력 결 과 는:당신 은 리 턴 메커니즘 에 대해 더 이해 하고 있 습 니까?
마지막 으로 자바 에서 리 셋 메커니즘 을 실현 하 는 대체적인 절 차 를 정리 합 시다.
정의 리 셋 인터페이스 CallBack클래스 A 는 리 셋 인터페이스 CallBack 을 실현 하 는 동시에 클래스 B 를 가 진 대상 b클래스 B 중 방법 method(CallBack cb)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.