Vorwort
Rückruf bedeutet Rückruf. Personen, die mit der Programmierung von Windows vertraut sind, müssen mit den vier Wörtern "Rückruffunktion" vertraut sein, aber Java -Programmierer wissen möglicherweise nicht viel darüber. "Callback -Funktion" oder "Callback -Methode" ist ein sehr wichtiges Konzept für Softwaredesign und -entwicklung. Es ist für Programmierer (unabhängig davon, welche Sprache) sehr notwendig ist.
Kürzlich habe ich Java gelernt und bin mit dem Rückrufmechanismus (Rückruf) in Kontakt gekommen. Als ich mich zum ersten Mal traf, fühlte ich mich ziemlich verwirrt und die relevanten Erklärungen, nach denen ich online gesucht habe, wurden entweder nur erwähnt oder einfach gesagt, als hätte ich einen Rückruf definiert. Nachdem ich den Rückruf verstanden hatte, ging ich natürlich online, um die verschiedenen Erklärungen zu lesen, und es gab kein Problem. Für mich, der ein Anfänger ist, fehlt mir ein schrittweise Prozess. Hier werde ich mein persönliches Verständnis des Rückrufmechanismus in der Reihenfolge von flach bis tief beschreiben. Wenn es Unangemessenheit gibt, hoffe ich, dass ich Ihnen Ratschläge geben werde!
Stellen Sie sich vor dem Start ein Szenario vor: Kindergartenkinder haben gerade innerhalb von 10 Ergänzungen gelernt.
Kapitel 1. Der Ursprung der Geschichte
Der Kindergärtnerin schrieb eine Formel "1 + 1 =" auf der Tafel, und Xiao Ming würde die Lücken ausfüllen.
Seit ich die Zugabe von weniger als 10 gelernt habe, kann Xiao Ming diese Frage ausschließlich selbst berechnen. Der Code zum Simulieren des Vorgangs lautet wie folgt:
public class student {private String name = null; public student (String name) {// todo automatisch erzeugte Konstruktor stubthis.name = name;} public void setName (String name) {this.name = name;} private int calcadd (int a, int b) {return a + b;} public void (int (int a), int b), int (a int (a b); System.out.println (Name + "mentale Arithmetik:" + a + " +" + b + "=" + Ergebnis);}} Als Xiao Ming die Lücken ausfüllte, berechnete er den Clacadd direkt und stellte fest, dass das Ergebnis 2 war und das Ergebnis in den Raum schrieb. Der Testcode lautet wie folgt:
public class test {public static void main (String [] args) {int a =; int b =; Schüler S = neuer Schüler ("Xiao ming"); s.fillblank (a, b);}} Die Betriebsergebnisse sind wie folgt:
Die mentale Arithmetik von Xiao Ming: 1 + 1 = 2
Dieser Prozess erfolgt ausschließlich durch das Instanzobjekt der Schülerklasse und beinhaltet keinen Rückrufmechanismus.
Kapitel 2. Die Suche nach Ärger für Kindergärtnerlehrer
Während der Pause hatte der Kindergärtner plötzlich eine Laune heraus und schrieb "168 + 291 =" auf der Tafel, um Xiao Ming abzuschließen, und kehrte dann ins Büro zurück.
Blume reiben! Warum können nicht alle Lehrer mit Xiao Ming auskommen? Es ist offensichtlich jenseits der Regeln, okay? Zu diesem Zeitpunkt konnte Xiao Ming es offensichtlich nicht durch mentale Arithmetik wie die oben genannte vervollständigen. Als er verwirrt war, übergab Xiao Hong in der Klasse einen Taschenrechner, der nur die Addition (einen Profiteer) berechnen konnte! ! ! ! Xiao Ming wusste zufällig, wie man einen Taschenrechner benutzt, sodass er die Ergebnisse über den Taschenrechner berechnete und die Einfüllblanken abgeschlossen hat.
Der Code für den Taschenrechner lautet:
öffentlicher Klassenrechner {public int add (int a, int b) {return a + b;}} Ändern Sie die Schülerklasse und fügen Sie eine Methode hinzu, um den Taschenrechner zu verwenden:
public class Student{private String name = null;public Student(String name){// TODO Auto-generated constructor stubthis.name = name;}public void setName(String name){this.name = name;}@SuppressWarnings("unused")private int calcADD(int a, int b){return a + b;}private int useCalculator(int a, int b){return new Calculator (). Add (a, b);} public void fillblank (int a, int b) {int result = usecalculator (a, b); Der Testcode lautet wie folgt:
public class test {public static void main (String [] args) {int a =; int b =; Schüler S = neuer Schüler ("Xiao ming"); s.fillblank (a, b);}} Die Betriebsergebnisse sind wie folgt:
Xiao Ming verwendet Taschenrechner: 168 + 291 = 459
Der Rückrufmechanismus war nicht an diesem Prozess beteiligt, aber einige der Arbeiten von Xiao Ming wurden übertragen und werden vom Taschenrechner unterstützt.
3. Der Kindergärtner ist zurück
Als ich feststellte, dass Xiao Ming die Hinzufügung von 3 Ziffern abgeschlossen hatte, dachte der Lehrer Xiao Ming sehr klug und ein formbares Talent. Also schrieb er "26549 + 16487 =" auf der Tafel und bat Xiao Ming, die Einfüllblinden vor dem Unterricht zu vervollständigen, und kehrte dann ins Büro zurück.
Xiao Ming sah den kleinen Freund an, der außerhalb des Klassenzimmers Spaß hatte und nicht anders konnte, als traurig zu sein. Wenn Sie nicht zum Spielen gehen, wird diese Pause ruiniert! ! ! ! Mit dem Taschenrechner, den Xiaohong es erneut übergab, hat Xiao Ming einen Plan entwickelt: Lassen Sie Xiaohong es für ihn tun.
Xiao Ming sagte zu Xiaohong, dass die Frage "26549 + 16487 =" sei, dann auf den spezifischen Ort zum Ausfüllen der Ergebnisse hingewiesen und dann Spaß gemacht hat, um Spaß zu haben.
Hier implementieren wir Xiaohong nicht allein, sondern betrachten diesen Taschenrechner, der nur die Addition berechnen kann, und Xiaohong als Ganzes, einen Superrechner, der die Ergebnisse berechnen und die Lücken ausfüllen kann. Die Parameter, die dieser Superrechner übergeben muss, sind die beiden Ergänzungen und die Position, um die Lücken auszufüllen, und diese Inhalte müssen im Voraus informiert werden, dh Xiao Ming möchte einen Teil seiner Methoden Xiao Hong aussetzen. Der einfachste Weg ist es, Xiao Hong seine Referenz und die beiden Ergänzungen zusammen zu erzählen.
Daher sollte die Methode des Superkalkulators zwei Operanden und einen Verweis auf Xiao Ming selbst enthalten. Der Code lautet wie folgt:
Public Class Supercalculator {public void add (int a, int b, schüler xiaoming) {int result = a + b; xiaoming.fillblank (a, b, result);}} Xiao Ming benötigt keine mentale Arithmetik oder Taschenrechner mehr, daher muss er nur eine Methode haben, um Xiaohong um Hilfe zu bitten. Der Code ist wie folgt:
public class student {private String name = null; public student (String name) {// Todo automatisch generierter Konstruktor stubthis.name = name;} public void setName (String name) {this.name = name;} public void callhelp (int a, int b) {new Supercalcalum (). Ergebnis) {System.out.println (Name + "Suche nach Xiaohong -Berechnung:" + a + " +" + b + "=" + result);}} Der Testcode lautet wie folgt:
public class test {public static void main (String [] args) {int a =; int b =; Student s = neuer Schüler ("xiao ming"); s.callHelp (a, b);}} Das laufende Ergebnis ist:
Xiao Ming bat um Hilfe Xiaohong zu berechnen: 26549 + 16487 = 43036
Der Ausführungsprozess lautet: Xiao Ming ruft die Methode von Xiaohong (neuer Supercalculator ()) über seine eigene CallHelp -Methode auf und verweist auf seine eigene Referenz beim Anruf.
(dies) geben es als Parameter ein. Nachdem Xiaohong den Taschenrechner verwendet hatte, um das Ergebnis zu erhalten, rief er die Fillblank -Methode von Xiao Ming zurück und füllte das Ergebnis in den Platz auf der Blackboard.
Lichter und Lichter! Zu diesem Zeitpunkt debütierte die Rückruffunktion offiziell. Die FILLBLANK -Methode von Xiao Ming ist das, was wir oft zurückrufen.
Auf diese Weise ist deutlich zu erkennen, dass Xiao Ming nicht mehr warten muss, bis die Ergänzung abgeschlossen ist und das Ergebnis an der Tafel gefüllt ist, bevor er mit seinen Freunden Spaß haben kann. Die Füllung in der Blank-Arbeit wird von Xiaohong, dem Superrechner, durchgeführt. Die Vorteile von Rückrufen wurden begonnen, sich zu reflektieren.
Kapitel 4. Die Schwiegermutter an der Tür
Am Eingang des Kindergartens gibt es eine alte Dame mit grauen Haaren. Sie richtete dort einen Straßenstand ein, der Junk Food verkaufte, das jeden Tag fast abgelaufen ist, unabhängig von Wind und Regen. Weil ich alt bin, ist mein Verstand ein wenig verwirrt und ich kann oft nicht herausfinden, wie viel Geld ich verdient habe. Eines Tages hörte sie, dass Xiao Ming mit Hilfe von Xiaohong mit der Kindergartenlehrerin mit der Kindergärtnerin kämpfte. Also beschloss meine Schwiegermutter, den Little Red Card Super Calculator als ihr kleiner Helfer zu finden und eine Packung Weilong-würzige Streifen als Belohnung bereitzustellen. Xiaohong konnte der Versuchung nicht widerstehen und stimmten zu.
Im Rückblick auf den Code im vorherigen Kapitel haben wir festgestellt, dass die von der Methode des Little Red Card Super Calculators erforderlichen Parameter zwei ganzzahlige Variablen und ein Studentenobjekt sind, aber die alte Dame ist keine Studentin, sondern eine kleine Anbieter, daher muss sie hier Änderungen vornehmen. In diesem Fall ist es für uns natürlich, an Erbe und Polymorphismus zu denken. Wenn wir den Schüler Xiao Ming und den Verkäufer der alten Dame, von einer Elternklasse zu erben, müssen wir nur einen Hinweis auf die Elternklasse an den Little Red Card Super Calculator weitergeben.
In der tatsächlichen Verwendung, unter Berücksichtigung des einzigen Vererbung von Java und dem nicht zu viel von sich anderen anderen, verwenden wir die Methode des Erbens von der Schnittstelle, um mit internen Klassen zusammenzuarbeiten.
Mit anderen Worten, Xiaohong hofft, den Kindern in der Klasse in Zukunft weiterhin Berechnungsdienste anzubieten und gleichzeitig der alten Dame Buchhaltungsdienste anzubieten und in Zukunft sogar das Geschäft anderer Menschen zu erweitern. Deshalb stimmte sie allen Kunden eine Methode für die einheitliche Verarbeitung zu, dh den Operanden, die sie benötigt und wie es nach Abschluss der Berechnung geht. Xiaohong hat diese einheitliche Methode in eine Schnittstelle gemacht und für alle zur Verfügung gestellt. Der Code lautet wie folgt:
Öffentliche Schnittstelle Dojob {public void fillblank (int a, int b, int result);} Da die Inspiration von Xiao Ming geholfen hat, die Lücken zu füllen, behielt Xiaohong ihre ursprüngliche Absicht bei und behandelte ihr gesamtes Geschäft als Fillblank.
Gleichzeitig modifizierte Xiaohong seinen Taschenrechner so, dass es mit verschiedenen Personen umgehen kann, die gleichzeitig die Dojob -Schnittstelle implementieren. Der Code ist wie folgt:
Public Class Supercalculator {public void add (int a, int b, dojob kunden) {int result = a + b; customer.fillblank (a, b, result);}} Nachdem Xiao Ming und die alte Dame diese Schnittstelle bekommen haben, ist es gleichbedeutend mit der Anweisung von Xiaohong, die Ergebnisse in einem einheitlichen Modell zu verarbeiten und interne Klassen zu verwenden, wie bereits erwähnt. Der Code ist wie folgt:
Xiao Mings:
public class Student{private String name = null;public Student(String name){// TODO Auto-generated constructor stubthis.name = name;}public void setName(String name){this.name = name;}public class doHomeWork implements doJob{@Overridepublic void fillBlank(int a, int b, int result){// TODO Auto-generated method stubSystem.out.println (Name + "Suche nach XiaoHong -Berechnung:" + a + " +" + b + "=" + result);}} public void callHelp (int a, int b) {neuer Supercalculator (). Alte Dame:
öffentlicher Klassenverkäufer Stubsystem.out.println (Name + "Hilfe von Hilfe Xiaohong, um Konten zu begleichen:" + a + " +" + b + "=" + result + "meta");}} public void callHelp (int a, int b) {New Supercalculator (). Der Testverfahren ist wie folgt:
public class test {public static void main (String [] args) {int a =; int b =; int c =; int d =; Student s = neuer Schüler ("xiao ming"); Verkäufer S = neuer Verkäufer ("Oma"); S.Callhelp (a, b); Die Betriebsergebnisse sind wie folgt:
Xiao Ming bat um Hilfe Xiaohong, um zu berechnen: 56 + 31 = 87
Die alte Dame bittet um Hilfe von Xiaohong, um Konten zu begleichen: 26497 + 11256 = 37753 Yuan
Die letzten Worte
Es ist deutlich zu sehen, dass Xiaohong diese Angelegenheit bereits als Karriere behandelt hat, und Sie werden es wissen, indem Sie sich den Namen ansehen, den sie dem Schnittstellen -Dojob gegeben hat.
Einige Leute fragen sich vielleicht, warum eine alte Dame so viel Geld verdienen kann, indem sie einen Stand einrichten? Gibt es ein Problem mit Ihrem Fokus? ! Was wir hier sprechen, ist der Rückrufmechanismus! !
Ich weiß nur, dass das Geschäft von Xiaohong später weiter expandierte und vor dem Abschluss des Kindergartens endlich ihr erstes Haus in ihrem Leben mit dem Geld, das sie verdient hatte, kaufte.