자바(JAVA) 다운로드를 통한 콜백(CallBack) 이해하기.

다운로드 시작 3초 후 완료

프로젝트 구성

인터페이스는 추상설계로 본체를 채우지 못함.
그렇기 떄문에 구현한 클래스에서 재정의가 필수로 요구된다.

이렇게하면 인터페이스를 구현할 준비가 완료되고, 나머지 클래스를 생성 후 이용하면 된다.

인터페이스를 다른클래스에서도 이용할 때는 그곳의 생서자를 만든 후 this를 통해 보낸다.

받는 클래스에서는 이렇게 인터페이스명을 이용해 변수를 생성 후, 그 변수를 이용해 생성메소드를 만들어 저장한다. 이렇게 하면 이 클래스에서도 인터페이스가 사용 가능하다.

그 후에 다운로드 클래스 완성.

웹 클래스에서 인터페이스 재 정의 완성

메인메뉴에서 웹 하나 생성하여 실행하기.

3초 후 다운로드를 성공하였다고 뜬다.

완료!

상세 코드

CallBack.java

package callback;

public class CallBack {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Web browser = new Web();
		browser.clickImage();
	}

}

Download.java

package callback;

import java.lang.Thread;
import java.lang.InterruptedException;

public class Download {

	private OnDownloadListener listener;
	
	public Download(OnDownloadListener name) {
		listener = name;
	}
	
	public void Start() {
		//다운로드 메소드 아직 안 배움 했다고 칩시다!
		
		System.out.println("다운로드를 시작합니다.");
		
		try {
			Thread.sleep(3000);
			listener.OnDownloadSuccess();
			
		} catch (InterruptedException e) {
			System.out.println(e.getMessage());
			listener.OnDownloadFail();
		}
	}
	
}

OnDownloadListener.java

package callback;

public interface OnDownloadListener {

	//다운로드했을 때의 상황 설계
	
	public void OnDownloadSuccess();
	public void OnDownloadFail();
	
}

Web.java

package callback;

public class Web implements OnDownloadListener{

	public void clickImage() {
		Download download = new Download(this);
		download.Start();
	}
	
	@Override
	public void OnDownloadSuccess() {
		System.out.println("다운로드를 성공하였습니다.");
	}
	@Override
	public void OnDownloadFail() {
		System.out.println("다운로드를 실패하였습니다.");
	}
}

 

————————————————–

사이트 리뉴얼중입니다~

서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다.
많은 가입(?) 부탁드립니다~
https://svrforum.com

이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

홈서버 IT 커뮤니티 SVRFORUM
Link