


Detaillierte Erläuterung des Java-Rückrufmechanismus und spezifische Details des Beispielcodes
In diesem Artikel werden hauptsächlich die detaillierten Erläuterungen zum Java-Rückrufmechanismus und die spezifischen Details des Beispielcodes vorgestellt. Freunde, die ihn benötigen, können sich auf
Java-Rückrufmechanismus
Zusammenfassung:
Ich habe kürzlich Java gelernt und bin mit dem Rückrufmechanismus (CallBack) in Kontakt gekommen. Als ich es zum ersten Mal traf, empfand ich es als ziemlich verwirrend, und die relevanten Erklärungen, die ich im Internet fand, wurden entweder in einem Satz erklärt oder sie waren relativ einfach und schienen eine Definition für CallBack zu liefern. Nachdem ich die Rückrufe verstanden hatte, habe ich natürlich verschiedene Erklärungen im Internet gelesen und es gab wirklich kein Problem. Allerdings fehlt mir als Anfänger eine Schritt-für-Schritt-Anleitung. Hier werde ich mein persönliches Verständnis des Rückrufmechanismus in der Reihenfolge von flacher nach tiefer beschreiben. Wenn etwas nicht stimmt, können Sie mich gerne aufklären! Bevor Sie beginnen, stellen Sie sich eine Szene vor: Kindergartenkinder haben gerade innerhalb von 10 Minuten Addition gelernt.Kapitel 1. Der Ursprung der Geschichte
Die Kindergärtnerin schrieb eine Gleichung „1 + 1 =“ an die Tafel und Xiao Ming füllte die Lücken aus. Da er die Addition innerhalb von 10 gelernt hat, kann Xiao Ming dieses Problem vollständig selbst berechnen. Der Code zur Simulation des Prozesses lautet wie folgt:public class Student { private String name = null; public Student(String name) { // TODO Auto-generated constructor stub this.name = name; } public void setName(String name) { this.name = name; } private int calcADD(int a, int b) { return a + b; } public void fillBlank(int a, int b) { int result = calcADD(a, b); System.out.println(name + "心算:" + a + " + " + b + " = " + result); } }
public class Test { public static void main(String[] args) { int a = 1; int b = 1; Student s = new Student("小明"); s.fillBlank(a, b); } }
小明心算:1 + 1 = 2
Kapitel 2. Die Schuld der Kindergärtnerin
Während des Unterrichts hatte die Kindergärtnerin eine plötzliche Idee und schrieb „168 + 291 =" für Xiao Ming an die Tafel abgeschlossen und dann zurück ins Büro. Blumenmassage! Warum haben alle Lehrer Probleme mit Xiao Ming? Es ist offensichtlich übertrieben, okay! Zu diesem Zeitpunkt war es offensichtlich, dass Xiao Ming sich nicht mehr auf Kopfrechnen wie oben verlassen konnte. Als er verwirrt war, reichte Xiao Hong, ein Klassenkamerad in der Klasse, einen Taschenrechner, der nur Addition (Profiteur) berechnen konnte! ! ! ! Xiao Ming wusste zufällig, wie man einen Taschenrechner benutzt, also benutzte er den Taschenrechner, um die Ergebnisse zu berechnen und die Lücken auszufüllen. Der Code des Rechners lautet:public class Calculator { public int add(int a, int b) { return a + b; } }
public class Student { private String name = null; public Student(String name) { // TODO Auto-generated constructor stub this.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); System.out.println(name + "使用计算器:" + a + " + " + b + " = " + result); } }
public class Test { public static void main(String[] args) { int a = 168; int b = 291; Student s = new Student("小明"); s.fillBlank(a, b); } }
小明使用计算器:168 + 291 = 459
3. Die Kindergärtnerin kam zurück
und stellte fest, dass Xiao Ming die Addition von drei Ziffern abgeschlossen hatte. Die Lehrerin hielt Xiao Ming für sehr klug und formbar Talent. Also schrieb er „26549 + 16487 =“ an die Tafel und bat Xiao Ming, die Lücken auszufüllen, bevor er zum Unterricht ging, und kehrte dann ins Büro zurück. Xiao Ming sah den Freunden zu, die sich außerhalb des Klassenzimmers amüsierten, und konnte nicht anders, als traurig zu sein. Wenn wir nicht zum Spielen rausgehen, wird diese Pause ruiniert! ! ! ! Als Xiao Ming den Taschenrechner, den Xiao Hong ihm noch einmal überreichte, betrachtete, fasste er einen Plan: Lass Xiao Hong es für sie tun. Xiao Ming sagte zu Xiao Hong, dass das Thema „26549 + 16487 =“ sei, wies dann auf den konkreten Ort hin, um das Ergebnis einzutragen, und ging dann glücklich zum Spielen hinaus. Anstatt Xiaohong separat zu implementieren, betrachten wir hier diesen Rechner, der nur Additionen und Xiaohong als Ganzes durchführen kann, einen Superrechner, der Ergebnisse berechnen und Lücken füllen kann. Die Parameter, die an diesen Superrechner übergeben werden müssen, sind zwei Addends und die auszufüllende Position, und diese Inhalte müssen von Xiao Ming im Voraus mitgeteilt werden. Das bedeutet, dass Xiao Ming Xiao Hong einen Teil seiner Methode offenbaren möchte. Der einfachste Weg besteht darin, Xiaohong das Zitat und die beiden Ergänzungen zusammen mitzuteilen. Daher sollte die Add-Methode des Superrechners 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, Student xiaoming) { int result = a + b; xiaoming.fillBlank(a, b, result); } }
public class Student { private String name = null; public Student(String name) { // TODO Auto-generated constructor stub this.name = name; } public void setName(String name) { this.name = name; } public void callHelp (int a, int b) { new SuperCalculator().add(a, b, this); } public void fillBlank(int a, int b, int result) { System.out.println(name + "求助小红计算:" + a + " + " + b + " = " + result); } }
public class Test { public static void main(String[] args) { int a = 26549; int b = 16487; Student s = new Student("小明"); s.callHelp(a, b); } }
小明求助小红计算:26549 + 16487 = 43036
Kapitel 4. Schwiegermutter vor der Tür
幼稚园的门口有一个头发花白的老婆婆,每天风雨无阻在那里摆着地摊卖一些快过期的垃圾食品。由于年纪大了,脑子有些糊涂,经常算不清楚自己挣了多少钱。有一天,她无意间听到了小明跟小伙伴们吹嘘自己如何在小红的帮助下与幼师斗智斗勇。于是,婆婆决定找到小红牌超级计算器来做自己的小帮手,并提供一包卫龙辣条作为报酬。小红经不住诱惑,答应了。
回看一下上一章的代码,我们发现小红牌超级计算器的add方法需要的参数是两个整型变量和一个Student对象,但是老婆婆她不是学生,是个小商贩啊,这里肯定要做修改。这种情况下,我们很自然的会想到继承和多态。如果让小明这个学生和老婆婆这个小商贩从一个父类进行继承,那么我们只需要给小红牌超级计算器传入一个父类的引用就可以啦。
不过,实际使用中,考虑到java的单继承,以及不希望把自身太多东西暴漏给别人,这里使用从接口继承的方式配合内部类来做。
换句话说,小红希望以后继续向班里的小朋友们提供计算服务,同时还能向老婆婆提供算账服务,甚至以后能够拓展其他人的业务,于是她向所有的顾客约定了一个办法,用于统一的处理,也就是自己需要的操作数和做完计算之后应该怎么做。这个统一的方法,小红做成了一个接口,提供给了大家,代码如下:
public interface doJob { public void fillBlank(int a, int b, int result); }
因为灵感来自帮小明填空,因此小红保留了初心,把所有业务都当做填空(fillBlank)来做。
同时,小红修改了自己的计算器,使其可以同时处理不同的实现了doJob接口的人,代码如下:
public class SuperCalculator { public void add(int a, int b, doJob customer) { int result = a + b; customer.fillBlank(a, b, result); } }
小明和老婆婆拿到这个接口之后,只要实现了这个接口,就相当于按照统一的模式告诉小红得到结果之后的处理办法,按照之前说的使用内部类来做,代码如下:
小明的:
public class Student { private String name = null; public Student(String name) { // TODO Auto-generated constructor stub this.name = name; } public void setName(String name) { this.name = name; } public class doHomeWork implements doJob { @Override public void fillBlank(int a, int b, int result) { // TODO Auto-generated method stub System.out.println(name + "求助小红计算:" + a + " + " + b + " = " + result); } } public void callHelp (int a, int b) { new SuperCalculator().add(a, b, new doHomeWork()); } }
老婆婆的:
public class Seller { private String name = null; public Seller(String name) { // TODO Auto-generated constructor stub this.name = name; } public void setName(String name) { this.name = name; } public class doHomeWork implements doJob { @Override public void fillBlank(int a, int b, int result) { // TODO Auto-generated method stub System.out.println(name + "求助小红算账:" + a + " + " + b + " = " + result + "元"); } } public void callHelp (int a, int b) { new SuperCalculator().add(a, b, new doHomeWork()); } }
测试程序如下:
public class Test { public static void main(String[] args) { int a = 56; int b = 31; int c = 26497; int d = 11256; Student s1 = new Student("小明"); Seller s2 = new Seller("老婆婆"); s1.callHelp(a, b); s2.callHelp(c, d); } }
运行结果如下:
小明求助小红计算:56 + 31 = 87 老婆婆求助小红算账:26497 + 11256 = 37753元
最后的话
可以很明显的看到,小红已经把这件事情当做一个事业来做了,看她给接口命的名字doJob就知道了。
有人也许会问,为什么老婆婆摆摊能挣那么多钱? 你的关注点有问题好吗!!这里聊的是回调机制啊!!
我只知道,后来小红的业务不断扩大,终于在幼稚园毕业之前,用挣到的钱买了人生的第一套房子。
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Java-Rückrufmechanismus und spezifische Details des Beispielcodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

Java ist eine beliebte Programmiersprache, die sowohl von Anfängern als auch von erfahrenen Entwicklern erlernt werden kann. Dieses Tutorial beginnt mit grundlegenden Konzepten und geht dann weiter zu fortgeschrittenen Themen. Nach der Installation des Java Development Kit können Sie das Programmieren üben, indem Sie ein einfaches „Hello, World!“-Programm erstellen. Nachdem Sie den Code verstanden haben, verwenden Sie die Eingabeaufforderung, um das Programm zu kompilieren und auszuführen. Auf der Konsole wird „Hello, World!“ ausgegeben. Mit dem Erlernen von Java beginnt Ihre Programmierreise, und wenn Sie Ihre Kenntnisse vertiefen, können Sie komplexere Anwendungen erstellen.
