Java 8 Default methods es una de las nuevas características de Java que nos permite definir métodos y que estos pertenezcan a las clases que queramos. El concepto se parece mucho al concepto de mixins de otros lenguajes de programación.
Java 8 default methods
Vamos a construir un ejemplo que se encargue de diseñar un método que nos imprima las diferentes propiedades que una clase tiene. Este método se podrá aplicar a cualquier clase. Para diseñar un default method necesitamos crear una interface.
package com.arquitecturajava; import java.lang.reflect.Field; public interface InformacionObjeto { default public void imprimirPropiedadesObjeto() { Field[] campos =this.getClass().getDeclaredFields(); for(int i=0;i<campos.length;i++) { System.out.println(campos[i].getName()); } } }
Esta interface puede contener métodos normales y default methods . En este caso sólo contendrá un default method. Este método se apoya en el API de reflection para acceder a todas las propiedades que un objeto tiene e imprimirlas por la consola. El siguiente paso será construir una clase que implemente este interface.
package com.arquitecturajava; public class Persona implements InformacionObjeto { private String nombre; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getEdad() { return edad; } public void setEdad(String edad) { this.edad = edad; } private String edad; }
Automaticamente se añadirá a la clase el default method y se podrá utilizar como si se tratara de un método normal.
package com.arquitecturajava; public class Principal { public static void main (String args[]) { Persona p= new Persona(); p.imprimirPropiedadesObjeto(); } }
El resultado de este código imprimirá por consola las propiedades de la clase. Los default métodos son muy útiles y añaden extensibilidad al sistema.
[…] artículos relacionados: Programación funcional y Streams , Java 8 default Methods , Java 8 […]
Woww excelente articulo, es bueno ir conociendo las peculiaridades de java 8 , algun libro que recomiendas ?
No se me ocurre ningún libro en castellano de java 8 🙁
Este libro da un ligero repaso a las novedades de la versión 8: http://www.anayamultimedia.es/libro.php?id=3608244
Yo me he leído este y está bastante bien.
http://www.casadellibro.com/libro-java-8/9788441536258/2392332
Buenas Cecilio,
Dices que “Esta interface puede contener métodos normales y default methods”, pero además y como novedad de Java 8 las interfaces pueden tener además métodos static.
Un saludo!
gracias por el aporte 🙂
Hola Cecilio,
Tengo una inquietud, ¿Qué diferencia se tendría con un método no abstracto (es decir con implementación) de una clase abstracta ?.
Que solo podemos heredar de una clase concreta en cambio de un interface podemos implementar los que necesitemos 😉