El enstringmiento de métodos es la práctica de llamar a diferentes métodos en una sola línea en lugar de llamar a otros métodos con la misma referencia de objeto por separado. Bajo este procedimiento, tenemos que escribir la referencia del objeto una vez y luego llamar a los métodos separándolos con un (punto).
El enstringmiento de métodos en Java es una sintaxis común para invocar múltiples llamadas de métodos en OOP. Cada método en el enstringmiento devuelve un objeto. Viola la necesidad de variables intermedias. En otras palabras, el enstringmiento de métodos se puede definir como si tuviéramos un objeto y llamaramos métodos en ese objeto uno tras otro se llama enstringmiento de métodos.
Sintaxis:
obj.method1().method2().method3();
Nota: El enstringmiento de métodos en Java también se conoce como expresión de parámetro o expresión de parámetro con nombre. A veces también se le conoce como choque de trenes debido al aumento en la cantidad de métodos, aunque a menudo se agregan saltos de línea entre los métodos.
Primero auditemos el ejemplo, y luego será mucho más fácil de explicar.
Ejemplo 1:
Java
class A { private int a; private float b; A() { System.out.println("Calling The Constructor"); } int setint(int a) { this.a = a; return this.a; } float setfloat(float b) { this.b = b; return this.b; } void display() { System.out.println("Display=" + a + " " + b); } } // Driver code public class Example { public static void main(String[] args) { // This will return an error as // display() method needs an object but // setint(10) is returning an int value // instead of an object reference new A().setint(10).display(); } }
Error de compilación en el código Java:
prog.java:34: error: int cannot be dereferenced new A().setint(10).display(); ^ 1 error
Explicación:
- Cuando llamamos al constructor, uno debe percibir que el constructor no contiene ningún tipo de devolución, pero devuelve la referencia del objeto actual. Abra esto para obtener más información sobre los constructores.
- Como el constructor devuelve la referencia del objeto, también podemos usar la referencia del objeto devuelto para llamar a otro método.
- Por lo tanto, al implementar el operador punto (.), también podemos llamar a otro método, llamado «setint (10)». A partir de ahora, estamos tratando de llamar más al método de visualización, pero es imposible. ¿Por qué? Mira el siguiente punto.
- Ahora, el método “setint(10)” devuelve el valor entero de la variable. De una manera común, uno puede entender fácilmente que el siguiente método no se puede llamar sobre la base de una variable. Para resolver esto, el método «setint (10)» debe devolver la referencia del objeto. ¿Cómo se puede hacer?.
Ejemplo 2:
Java
class A { private int a; private float b; A() { System.out.println("Calling The Constructor"); } public A setint(int a) { this.a = a; return this; } public A setfloat(float b) { this.b = b; return this; } void display() { System.out.println("Display=" + a + " " + b); } } // Driver code public class Example { public static void main(String[] args) { // This is the "method chaining". new A().setint(10).setfloat(20).display(); } }
Calling The Constructor Display=10 20.0
- En el ejemplo anterior, hemos derivado el método setint(int a) & setfloat(float b) como tipo de clase.
- En este caso, al devolver, estamos usando «esto» y está devolviendo la referencia de instancia actual. Marque esto para los usos y valores de «esta» variable de referencia.
- Cuando se implementa el enstringmiento de métodos en el método principal, «setint(10)» y «setfloat(20)» devuelven la referencia del objeto, que se utiliza además para llamar al método «display()».