El concepto de Java constructor reference

El concepto de Java constructor reference es relativamente habitual cuando trabajamos con lambdas y Streams. Sin embargo muchas veces cuesta entender como funciona y que es lo que aporta. Vamos a ver un ejemplo sencillo en el cual hacemos una referencia a un constructor con Java 8 .  Para ello nos vamos a apoyar en la clase Persona.


package com.arquitecturajava;

public class Persona {

	private String nombre;

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public Persona(String nombre) {
		super();
		this.nombre = nombre;
	}


}


Nosotros podemos construir una lista de personas a través de un array de cadenas usando una java constructor reference. El siguiente código nos muestra como hacerlo.


package com.arquitecturajava;


import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Principal {

	public static void main(String[] args) {
		
	List<String> lista=Arrays.asList("pepe","juan","pedro");
	
	List<Persona> listaPersonas=lista.stream().map(Persona::new).collect(Collectors.toList());

	for(Persona p:listaPersonas) {
		
		System.out.println(p.getNombre());
	}
	
	}

}


Acabamos de crear tres personas e imprimirlas en la consola.

Java Constructor reference

Sin embargo es difícil ver cuando usar este tipo de sintaxis Persona:new para hacer referencia a los constructores. Un ejemplo que ayuda a clarificar es usar un array similar para construir un grupo de ficheros apoyandononos en el constructor de la clase File. Para ello nos vamos a apoyar en una clase helper que dispone de un método para crear un fichero.

package com.arquitecturajava;

import java.io.File;
import java.io.IOException;

public class IOUtil {

public static void  crearFicheros(File fichero) {
		
		try {
			fichero.createNewFile();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Podemos utilizar este clase de utilidades y su método crear fichero para crear un grupo de ficheros usando streams y lambdas .

Veamos el código:



package com.arquitecturajava;


import java.io.File;
import java.util.Arrays;
import java.util.List;

public class Principal2 {

	public static void main(String[] args) {
		
	List<String> lista=Arrays.asList("pepe.txt","juan.txt","pedro.txt");
	
	lista.stream().map(File::new).forEach(IOUtil::crearFicheros);


	}
	
}


Con este sencillo código a nivel de expresiones lambda y streams se crea una lista de ficheros en la carpeta de nuestro proyecto de forma  rápida.

java constructor reference

Otros artículos relacionados

  1. Utilizando un Java reference method
  2. Java Stream String y Java 8
  3. Java Stream Collectors y su uso
  4. Java Method Reference
It's only fair to share...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

About Cecilio Álvarez Caules

Cecilio Álvarez Caules Sun Certified Enterprise Architech (J2EE/JEE).

One Response to El concepto de Java constructor reference

  1. Carol 29 agosto, 2017 at 13:08 #

    Gracias por compartir conocimientos. Muy claro

Deja un comentario