[Método predeterminado Java8]

Extracto de "Java8 real"

Java 8 método predeterminado añadido se debe principalmente a los diseñadores de bibliotecas de apoyo, para que puedan escribir más fácilmente mejorada interfaz. Este enfoque es importante porque se encontrará más y más del método por defecto en la interfaz, pero relativamente pocos realmente necesita escribir el método por defecto de los programadores, pero sólo ayuda a mejorar el programa, y ​​no para la escritura ningún programa en particular, estamos aquí o no de largo aliento, dar un ejemplo.

List<Apple> heavyApples1 = inventory.stream().filter((Apple a) -> a.getWeight() > 150).collect(toList());

List<Apple> heavyApples2 = inventory.parallelStream().filter((Apple a) -> a.getWeight() > 150).collect(toList());

Pero hay un problema: Antes de Java 8, Lista no corriente o método parallelStream, no aplicó la interfaz Collection, debido a que estos métodos aún no habían pensado en ello! Estos métodos pueden no, el código se compila. El cambio para su propia interfaz, la solución más simple es hacer que los diseñadores de Java 8 de la corriente y añadir un método para unirse a la interfaz Collection para lograr la clase ArrayList.

Pero si al hacerlo por los usuarios es una pesadilla. Hay muchas alternativas Colecciones interfaces de marco se implementan utilizando la API Collection. Sin embargo, se añade un nuevo método para la interfaz, significa que todas las clases de entidad debe proporcionar una implementación. diseñador del lenguaje no puede controlar todas las implementaciones de las colecciones existentes, y que ahora está en el dilema: ¿cómo cambiar una interfaz publicada sin interrumpir existente lograrlo? 8 de Java solución es romper el último enlace - Interfaz ahora puede incluir la clase de implementación no proporciona una manera de lograr una firma! ¿Quién va a ponerlo en práctica? El método de la faltante del cuerpo está dotado de una interfaz (y por lo tanto tener la aplicación por defecto), en lugar de por la clase de implementación. Esto le da a los diseñadores de la interfaz proporciona una manera de ampliar la interfaz, sin romper el código existente. Java 8 para utilizar la nueva palabra clave por defecto en una declaración de interfaz para indicar esto.

Por ejemplo, en Java 8, ahora se puede llamar directamente a la Lista de un método para ordenar. Es la interfaz Lista método por defecto se muestra a continuación Java 8 implementada, se llama método estático Collections.sort:

default void sort(Comparator<? super E> c) {
	Collections.sort(this, c);
}

Esto significa que cualquier lista de clases de entidad no es necesario para poner en práctica de manera explícita tipo, pero en versiones anteriores de Java, a menos que una especie de realización, de lo contrario, se producirá un error en estas clases de entidad recompilar. Pero, un momento, una clase puede implementar múltiples interfaces, ¿verdad? Por lo tanto, si hay múltiples implementación por defecto, que significa que Java ha sido de alguna forma de varias interfaces en herencia múltiple? Sí, hasta cierto punto lo es. Java 8 con algunas restricciones para evitar similar a C ++ en el diamante notoria aparece la sucesión.

Publicados 107 artículos originales · ganado elogios 88 · vistas 260 000 +

Supongo que te gusta

Origin blog.csdn.net/Code_shadow/article/details/103099317
Recomendado
Clasificación