Está en la página 1de 2

NUEVAS CARACTERISTICAS DE JAVA 8

Diferencias entre Inner Class Anonima y Lambda Expression

Inner Class Anonima:

1. Es una clase sin nombre


2. Puede extender de una clase abstracta y concreta
3. Puede implementar una interface que contiene cualquier numero de metodos abstractos
4. Podemos declarar variables de instancia
5. Puede ser instanciado
6. La palabra clave this siempre se refiere al objeto actual de la clase inner anonima pero no al
objeto de la clase externa
7. Inner class anonima es la mejor opcion si queremos controlar multiples metodos
8. En tiempo de compilacion un archivo .class sera generado
9.

Lambda Expresion:

1. Es una funcionn sin nombre (funcion anonima)


2. No puede extender de una clase abstract o concreta
3. Puede implementar una interface que contiene un solo metodo abstracto (functional
interface)
4. No podemos declarar variables de instancia, cualquier variable declarada es considerado
como una variable local
5. No pueden ser instanciados
6. La palabra clase this siempre se refiere al objeto de la actual clase outer
7. Lambda expresion es la mejor opcion si queremos controlar interface con una sola metodo
abstracto (functional interface)
8. En tiepo de compilacion no se creara una clase separada
9. Las variables locales son todas final, por lo que no se puede modificar su valor
10. Los miembros de clase outer pueden ser modificados dentro del lambda expression

Diferencias entre Interface con Default Method y Abstract Classes

Interface con Default Method

1. Dentro de la interface cada variable es siempre public static final no podemos declarar
variables de interface
2. La interface nunca toma control del estado del objeto
3. Dentro de una interface no podemos declarar un constructor
4. Dentro de una interface no podemos declarar instancias y bloques static.
5. Interfaces funcionales con metodo default method puede hacer referencia Lambda
expression
6. Dentro de la interface no podemos sobreescribir objetos de metodo de clase

Abstract Classes

1. Detro de una clase abstracta podemos declara variables de instancia, las cuales son
requeridas por las clases hija.
2. Las clases abstractas pueden hablar sobre el estado de los objetos
3. Dentro de la clase abstracta podemos declarar constructores
4. Dentro de la clase abstracta podemos declarar instancia y bloques statics
5. Las clases abstractas no pueden hacer referencia a lambda expressions
6. Dentro de la clase abstracta podemos sobreescribir un objeto metodo de clase.

Interfaces Funcionales Predefinidas.

Entre las interfaces funcionales predefinidas tenemos:

1. Predicate
2. Function
3. Consumer
4. Supplier

Predicate: Es la verificacion de una condicion dada y returna true or false. En Java Predicate es una
interface funcional con el unico metodo a implementar llamado boolean test(T t).

Para negar una condicion utilizamo el metodo negate().


Para unir condiciones utilzamos el metodo and() or()

PREDICATE AND FUNCION

PREDICATE

1. Utilizamos Predicate para implementar verificacion de condiciones.


2. Predicate puede aceptar un solo parametro el cual representa su parametro de entrada
Predicate<T>
3. La interface Predicate define un metodo abstracto llamado test()
4. public boolean test(T t)
5. Predicate puede solo retornar un valor de tipo boolean

FUNCTION

1. Utilizamos Function para realizar cualquier operación donde queremos retornar un tipo de
valor distinto a boolean.
2. Las funciones pueden aceptar dos parametros, el primero representa el parametro de entrada
y el segundo el tipo de dato que retornara: Function<T, R>
3. La interface Function define un metodo abstracto llamado apply()
4. public R apply(T t)
5. Function puede retornar cualquier tipo de dato como respuesta.

También podría gustarte