콜백은 이벤트 기반 프로그래밍에서 특정 이벤트가 발생할 때 함수에 전달된 참조가 호출되는 메커니즘입니다. C, C++와 같은 프로그래밍 언어의 경우 function1 포인터를 function2에 전달하여 콜백을 얻습니다. Java는 포인터를 지원하지 않으므로 콜백을 이와 같이 구현할 수 없습니다. 이를 위해 함수의 위치를 참조하는 인터페이스가 생성되고 전달됩니다. 이번 글에서는 콜백 함수에 대해 좀 더 자세히 알아보겠습니다.
구문:
광고 이 카테고리에서 인기 있는 강좌 JAVA MASTERY - 전문 분야 | 78 코스 시리즈 | 15가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
다음은 콜백 함수와 인터페이스가 존재하는 콜백 함수의 구문입니다. 이 방법은 나중에 수업 내에서 사용됩니다.
public interface interfaceA { public String callA() ; }
콜백 함수가 어떻게 작동하는지 간단하게 살펴보겠습니다.
다음은 Java 콜백 함수에 대한 샘플 프로그램입니다.
버튼을 클릭하면 텍스트를 인쇄하는 Java 프로그램
코드:
//Create an interface clickeventhandlrinterfce for the callback method interface clickeventhandlrinterfce { //call method clickhndlr public void clickhndlr(); } //Create a callback handler ClickHandler that implements the clickeventhandlrinterfce interface class ClickHandler implements clickeventhandlrinterfce { //call method clickhndlr public void clickhndlr() { System.out.println("Hey. . . You have Clicked"); } } //Create class for event generator class Button { public void onClick(clickeventhandlrinterfce chndlr) { chndlr.clickhndlr(); } } public class CallBackFuncExample { public static void main(String[] args) { //create an object for btn2 Button btn1 = new Button(); //create an object for ClickHandler ClickHandler chndlr = new ClickHandler(); //pass the object of ClickHandler for performing the default operation btn1.onClick(chndlr); //create an object for button2 Button btn2 = new Button(); //For implementing own operation, pass the interface btn2.onClick(new clickeventhandlrinterfce() { @Override //method clickhndlr that displays output on clicking public void clickhndlr() { System.out.println("Hey. . . You have clicked a button"); } }); } }
출력:
설명: 먼저 버튼1, ClickHandler 및 버튼2에 대한 개체를 만듭니다. 그런 다음 기본 작업을 수행하기 위해 Click Handler 개체를 전달합니다. 그런 다음 자체 작업을 구현하려면 클릭 시 출력을 표시하는 clickhndlr 메서드를 사용하여 인터페이스를 전달합니다. 이 모든 작업이 완료되면 콜백 메서드에 대한 인터페이스 clickeventhandlinterfce를 만듭니다. 그런 다음 clickeventhandlrinterfce 인터페이스를 구현하는 콜백 핸들러 ClickHandler를 만들고 마지막으로 이벤트 생성기에 대한 클래스를 만듭니다. 코드를 실행하면 위의 샘플 출력과 같이 두 줄이 인쇄됩니다.
콜백 기능을 구현한 간단한 자바 프로그램
코드:
//class starts here public class CallBackFuncExample { //main method public static void main(String args[]) { //Function that passes interface name as parameter func1(new interfaceA() { //method callA public String callA() { return "HI, I AM FIRST CALL "; } } ) ; // function that passes interface name as parameter func1(new interfaceA() { //method callA public String callA() { return "HI, I AM SECOND CALL"; } } ) ; func1(() -> { return "HI, I AM THIRD CALL"; }); } public static void func1(interfaceA intr) { System.out.println("Method called here: " + intr.callA()); } public interface interfaceA { public String callA(); } }
출력:
설명: 이 프로그램에서는 callA() 메소드 하나로 인터페이스가 생성됩니다. 그런 다음, 인터페이스A를 메서드 매개 변수로 사용하여 다른 메서드 func1이 생성됩니다. 그런 다음 func1 내부에서 인터페이스A.callA()를 호출합니다. 이러한 단계가 완료되면 인터페이스A의 새 인스턴스를 전달하고 func1을 호출하기 위해 callA() 메서드를 재정의합니다. 여기서는 코드가 더 깔끔하게 보이도록 new 키워드 대신 화살표 표기법을 사용했습니다. 코드를 실행하면 위 그림과 같이 세 가지 메소드가 호출되어 결과가 반환되는 것을 확인할 수 있습니다.
콜백 함수를 구현하고 문자열을 출력하는 Java 프로그램
코드:
//create an interface interface textprint { void samplefunc(String txt); } //create a class that implements the interface class classA implements textprint { //create a method samplefunc that takes a text as a parameter public void samplefunc(String txt) { System.out.println("The text is : " + txt); } } //main class public class CallBackFuncExample { // Reference to the textprint Interface textprint txtrcvr; CallBackFuncExample(textprint r) { txtrcvr = r ; } public void samplefunc2(String s) { txtrcvr.samplefunc(s); } //main method public static void main(String[] args) { // Create a object of the classA that implements the interface classA objA = new classA(); CallBackFuncExample obj2 = new CallBackFuncExample(objA); obj2.samplefunc2("Program runs successfully"); } }
출력:
설명: 이 프로그램에서는 인터페이스를 생성하고, 인터페이스를 구현하는 클래스를 생성합니다. 해당 클래스 내에서 텍스트를 매개변수로 사용하는 Samplefunc 메서드를 만듭니다. 생성된 클래스 객체를 이용하여 메소드가 호출되고, 코드 실행시 문자열이 출력됩니다.
클래스에 따라 두 개의 숫자를 더하는 Java 프로그램
코드:
import java.util.Scanner; //create an interface interface interfaceA { double func1(); } // class A that implements the interface class A implements interfaceA { public double func1() { return 2500.0; } } //class B that implements the interface class B implements interfaceA { public double func1() { return 1500.0; } } class CallBackFuncExample { //MAIN METHOD public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { //scanner object Scanner sc = new Scanner(System.in); System.out.println("Enter the class name"); String classnm = sc.next(); // object is then stored in cl Class cl = Class.forName(classnm); interfaceA intr = (interfaceA)cl.newInstance(); func2(intr); } static void func2(interfaceA intrfce) { double a = 2000.0; double b = intrfce.func1(); double sum = b + a; System.out.println("Total amount is :" + sum); } }
출력:
설명: 이 프로그램에서는 인터페이스가 생성되고 클래스 메서드가 호출됩니다. 여기서는 사용자 입력을 기반으로 콜백 함수를 이용하여 두 금액의 합을 구합니다.
위 내용은 자바 콜백 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!