Ir al contenido principal

Fundamentos Interfaces en Java 8

Curso java 8


Fundamentos Interfaces Java:


A diferencia de las interfaces anteriores a java 8, en las nuevas interfaces de esta versión se puede tener diversos tipos de métodos nuevos. A saber:
  1. default.
  2. static
  3. private
1.Métodos Default:

En esencia son métodos opcionales que no son necesitan ser para la implementados en las clase que se adhieren al contrato de nuestra interfaz. 
Como beneficio directo de esta característica nos encontramos con las manos libres en cierto modo para modificar nuestras interfaces sin temer que el código que ya ha implementado nuestra interfaz necesite modificación alguna.
Es importante destacar que esto no nos debe condicionar para programar de forma intensiva métodos de este tipo ya que se consideran métodos de carácter excepcional.

Sintaxis: 

public interface nombre_interfaz{

        default [tipo_retorno] nombre_metodo{

               [cuerpo_metodo]

       }
       etc...
}

Los métodos default también conocidos como métodos predeterminados.

2.Métodos Static:

La inclusión de este tipo de método en las interfaces nos evitar crear clases artificiales como la popular clase Collections . El objetivo de esta clase no es otro que incorporar utilidades para el  framework Collections que ahora podrían estar correctamente localizados.

Con esto el objetivo de este tipo de métodos queda claro. No es otro que, evitar esta tipo de clases creadas de un modo digamos extraño.
Es importante destacar que, este tipo de método no se hereda a través del mecanismo de la herencia entre interfaces.

3.Métodos private:

Este tipo de métodos solo se pueden usar en la propia interfaz( no se heredan) y su objetivo es evitar la duplicidad de código en diversos métodos.
Un detalle interesante es que pueden ser de instancia o static pero, fundamentalmente es para que lo usen los métodos default.

Ahora, muestro un pequeño ejemplo de interfaz. He incluido el método main en la interfaz para que sea código 100% funcional aprovechando la posibilidad de inclusión de métodos static.


 package com.interfaces.novedades;

import java.util.Arrays;

@FunctionalInterface
public interface Cacular {

int resultado(int x,int y);

default int calcula(int[] numeros) {

return Arrays.stream(numeros).reduce(0, (x,y)->resultado(x, y));

}
static boolean greaterThan(int num,Cacular calcular,int ... numbers) {
return num>calcular.calcula(numbers);
}
public static void main(String[] args) {
              //datos
int[] numeros= {1,1,1};

Cacular cacular1= (x,y)->x-y;
System.out.println(cacular1.calcula(numeros));

Cacular cacular2= (x,y)->x+y;
System.out.println(cacular2.calcula(numeros));

System.out.println(Cacular.greaterThan(2, cacular2, numeros));
}

}

NOTA: en el caso de desconocer las lambda expresion que hay en el método main ver el post relacionado haciendo click en este enlace:aprende lambda expresion


Comentarios

Entradas populares de este blog

Tipos ENUM en Java

Las enumeraciones es  una novedad que apareció en la versión 1.5 de java. En si, un enum es una lista de constantes con nombre que viene a sustituir las clásicas propiedades final declaradas en la interfaces o las clases. Con un enum definimos un nuevo tipo con un número de instancias discreta. Este nuevo tipo está limitado al listado de constantes que definimos en su declaración. El ejemplo clásico son los días de la semana: public enum DiaSemana{       LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO, DOMINGO } Cada constante representa un ejemplar único del tipo de la enumeración. Esta característica, nos  permite realizar las comparaciones entre las referencias de tipo con el operador == y no es necesario utilizar el método equals().    Ejemplo: DiaSemana diaLibre = DiaSemana.SABADO; if( diaLibre == DiaSemana.SABADO ){    System.out.println("Hoy descansas"); }else{ //lo que se tenga que ejecutar en cual...

Teoría creacion de Beans en Spring

En una aplicación existen diversas clases organizadas en paquetes y estos en sus respectivos módulos. Si vamos a la base, nuestro elemento mínimo es la clase. Ésta clase está destinada a muchos objetivos, entre ellos, la creación de  de Beans. Los Beans en si mismos no son nada más que POJOs(Plain Old Java Objects) los cuales son clases que no dependen de ningún framework para su funcionamiento. Un Bean además de ser un POJO tiene unos elementos base que debe poseer: constructor por defecto(además otros que pueda poseer) campos para guardar la información métodos de establecimiento(getter y setter) Una vez que poseamos los Beans de nuestra aplicación nos surge un problema base: -El boilerplate code: secciones de código que son incluidas en múltiples lugares con pocas o incluso sin ninguna alteración. Bien, para nosotros, como programadores java, sabemos el incontable número de veces que tenemos que instanciar una y otra vez nuestros beans. Si vemos un ejemplo trad...