Cierre en Java
Si definimos una expresión lambda a través de la cual deseamos incrementar el valor de una variable, arrojará un error.
Sin embargo, hay una solución fácil a este problema. Mediante el uso de Cierres
, podemos prevenir este error.
Cierres
son la función en línea y tienen expresiones valoradas, lo que significa que son las funciones de una clase con variables limitadas. Otra característica interesante de Cierres
es que se pueden pasar a otra función como parámetro.
Este artículo discutirá los Cierres
en detalle y proporcionará los ejemplos y explicaciones necesarios para facilitar el tema.
Antes de entrar en la discusión, veamos la sintaxis general del cierre, que es algo como lo siguiente.
(List_of_Arguments) -> {
Function_Body
}
Cierre en Java
En nuestro siguiente ejemplo, ilustraremos el más básico de los Cierres
donde usamos Cierres
para combinar dos cadenas. Echemos un vistazo a nuestro código a continuación.
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"));
}
}
Ya comentamos el propósito de cada línea. En el ejemplo anterior, primero definimos una interfaz llamada CombineString
con un método abstracto llamado concat
.
Ahora, en nuestra clase de control, acabamos de crear un Cierre
para definir el método abstracto.
Después de ejecutar el ejemplo anterior, obtendrá un resultado como el siguiente.
The combined string is: Alen Walker
Uso anidado de cierres en Java
Profundicemos un poco más en nuestro tema. Mire nuestro ejemplo a continuación, donde creamos una llamada anidada entre dos Cierres
.
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
}
}
Ya comentamos el propósito de cada línea. En nuestro ejemplo anterior, primero creamos las interfaces PrintData
y NumberAdd
.
La interfaz PrintData
contiene el método abstracto Print
, y la interfaz NumberAdd
contiene el método abstracto add
.
Ahora, en nuestra clase de control, primero definimos el método abstracto Imprimir
, como vamos a llamar a este método desagradablemente.
Luego definimos el método abstracto agregar
, y si observa la definición de este método, verá que llamamos al método Imprimir
.
Después de ejecutar el ejemplo anterior, obtendrá un resultado como el que se muestra a continuación.
The combined string is: 10
Tenga en cuenta que los ejemplos de código compartidos aquí están en Java y debe instalar Java en su entorno si su sistema no contiene Java.
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