Schließung in Java
Wenn wir einen Lambda-Ausdruck definieren, durch den wir bereit sind, den Wert einer Variablen zu erhöhen, wird ein Fehler ausgegeben.
Es gibt jedoch eine einfache Lösung für dieses Problem. Durch die Verwendung von Closures
können wir diesen Fehler verhindern.
Closures
sind die Inline-Funktion und haben wertvolle Ausdrücke, was bedeutet, dass sie die Funktionen einer Klasse mit begrenzten Variablen sind. Ein weiteres spannendes Feature von Closures
ist, dass sie als Parameter an eine andere Funktion übergeben werden können.
Dieser Artikel wird ausführlich auf Closures
eingehen und notwendige Beispiele und Erklärungen liefern, um das Thema zu vereinfachen.
Bevor wir in die Diskussion einsteigen, sehen wir uns die allgemeine Syntax der Schließung an, die in etwa so aussieht wie unten.
(List_of_Arguments) -> {
Function_Body
}
Schließung in Java
In unserem Beispiel unten veranschaulichen wir die grundlegendsten der Closures
, wo wir Closures
verwendet haben, um zwei Strings zu kombinieren. Werfen wir einen Blick auf unseren folgenden Code.
package javacodes;
// Importing necessary packages
import java.io.*;
interface CombineString { // Defining a interface
public String concat(String a, String b);
}
// The controlling class
public class JavaClosures {
public static void main(String[] args) {
// Using the "Lambda Expression"
CombineString cs = (str1, str2) -> str1 + str2;
System.out.println("The combined string is: " + cs.concat("Alen", " Walker"));
}
}
Wir haben bereits den Zweck jeder Zeile kommentiert. Im obigen Beispiel haben wir zuerst eine Schnittstelle namens CombineString
mit einer abstrakten Methode namens concat
definiert.
Jetzt haben wir in unserer Kontrollklasse gerade einen Closure
erstellt, um die abstrakte Methode zu definieren.
Nachdem Sie das obige Beispiel ausgeführt haben, erhalten Sie eine Ausgabe wie die folgende.
The combined string is: Alen Walker
Verschachtelte Verwendung von Closures in Java
Lassen Sie uns etwas tiefer in unser Thema einsteigen. Schauen Sie sich unser Beispiel unten an, wo wir einen verschachtelten Aufruf zwischen zwei Closures
erstellt haben.
interface PrintData { // An interface to print data
public void Print(int data); // An abstract method to print data
}
interface NumberAdd { // An interface to add two numbers
public void add(int a, int b); // An abstract method to add two numbers
}
// Main controlling class
public class JavaClosures {
public static void main(String[] args) {
// Using the "Lambda Expression"
PrintData printdata = (str) -> {
System.out.println("The combined string is: " + str);
};
NumberAdd addnum = (x, y) -> {
printdata.Print(x + y); // The nested call
};
addnum.add(5, 5); // Calling the add method
}
}
Wir haben bereits den Zweck jeder Zeile kommentiert. In unserem obigen Beispiel haben wir zuerst die Schnittstellen PrintData
und NumberAdd
erstellt.
Das Interface PrintData
enthält die abstrakte Methode Print
und das Interface NumberAdd
enthält die abstrakte Methode add
.
Nun haben wir in unserer Controlling-Klasse zuerst die abstrakte Methode Print
definiert, wie wir diese Methode fies nennen werden.
Dann definieren wir die abstrakte Methode add
, und wenn Sie sich die Definition dieser Methode ansehen, werden Sie sehen, dass wir die Methode Print
genannt haben.
Nachdem Sie das obige Beispiel ausgeführt haben, erhalten Sie eine Ausgabe wie die folgende.
The combined string is: 10
Bitte beachten Sie, dass die hier freigegebenen Codebeispiele in Java sind und Sie Java in Ihrer Umgebung installieren müssen, wenn Ihr System kein Java enthält.
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn