Método predeterminado de interfaz de nuevas funciones en Java 8

JAVA8 ha sido lanzado durante mucho tiempo, y no hay duda de que java8 es la versión más importante desde java5 (lanzado en 2004). Estos incluyen nuevas funciones en lenguajes, compiladores, bibliotecas, herramientas y JVM. La lista de nuevas funciones de Java 8 es la siguiente:

Interfaz método predeterminado
interfaz funcional Referencia del método de
expresión Lambda Stream Clase opcional Fecha API Base64 anotaciones repetidas y anotaciones de tipo 01 interfaz método predeterminado 1. ¿Cuál es el método predeterminado de la interfaz? A partir de Java 8, el programa permite que la interfaz incluya métodos con implementaciones específicas, Utilice la modificación predeterminada, este tipo de método es el método predeterminado. Puede agregar varios métodos predeterminados a la interfaz, y Java 8 proporciona muchos métodos predeterminados de interfaz correspondientes.








2. Los beneficios de diseñar métodos predeterminados de interfaz. La ventaja de
utilizar la programación de interfaz es que el desarrollo está orientado a la abstracción en lugar de a la programación orientada específica, lo que hace que el programa sea muy flexible. La desventaja es que cuando es necesario modificar la interfaz, todas las implementaciones deben modificarse en este momento. La clase de esta interfaz, por ejemplo, antes de Java 8, no existe un método foreach para nuestros marcos de colección de uso común. La solución que generalmente se puede pensar es agregar nuevos métodos e implementaciones a la interfaz relevante en el JDK. Desde Java8, se introdujo el método predeterminado de interfaz. Los beneficios son obvios. Primero, se resuelve el problema de compatibilidad de la versión anterior de Java8. Al mismo tiempo, para nuestro futuro desarrollo de programa, también puede utilizar directamente el método predeterminado de interfaz en la subclase de interfaz. Ya no es necesario implementar métodos de interfaz de respuesta en cada subclase.

3. En el método predeterminado
jdk8, la interfaz puede contener métodos de implementación, que deben ser modificados de manera predeterminada, los cuales se denominan métodos predeterminados. El método predeterminado debe proporcionar una implementación en la interfaz y se puede anular a pedido en la clase de implementación. El método predeterminado solo se puede llamar en la clase de implementación o mediante el objeto de clase de implementación. Nota: Cuando existe el mismo método predeterminado en varias interfaces principales, la clase secundaria hereda de acuerdo con el principio de proximidad.

interfaz pública IMathOperation {
/ **

  • Definición del método predeterminado de la interfaz para admitir los parámetros del método
    * /
    default void print () {
    System.out.println ("Esta es la interfaz básica para operaciones numéricas ...");
    }
    }
    4. Métodos
    estáticos Los métodos estáticos son métodos modificados por static. La página de métodos estáticos en la interfaz también debe implementarse, proporcionando una forma de llamar a los métodos directamente a través de la interfaz.

interfaz pública IMathOperation {
/ **

  • Defina el método predeterminado de la interfaz para admitir el parámetro del método
    * /
    default void print () {
    System.out.println ("Esta es la interfaz básica para operaciones numéricas ...");
    }

    / **

  • Definir el método predeterminado estático
    * /
    static void version () {
    System.out.println ("Esta es una calculadora simple de la versión 1.0");
    }
    }
    5. Utilice el método predeterminado de la interfaz para
    definir la interfaz IMathOperation y proporcionar el método de impresión predeterminado

interfaz pública IMathOperation {
/ **

  • Defina el método predeterminado de la interfaz para admitir el parámetro del método
    * /
    default void print () {
    System.out.println ("Esta es la interfaz básica para operaciones numéricas ...");
    }

    / **

  • Definir el método estático predeterminado
    * /
    static void version () {
    System.out.println ("Esta es una calculadora simple de la versión 1.0");
    }
    / **
  • Método de suma de enteros
  • @param
  • @param b
  • @return
    * /
    public int add (int a, int b);
    }
    Subclase aplicación
    definición MathOperationImpl subclase interfaz implementa IMathOperation

Como puede ver aquí, puede optar por implementar el método predeterminado de la interfaz cuando implemente la interfaz IMathOperation (o no implementarlo, utilícelo directamente en el método de subclase).

public class MathOperationImpl implementa IMathOperation { br /> @ Override
public int add (int a, int b) {
// las subclases pueden llamar directamente al método predeterminado de la interfaz de la clase principal
IMathOperation.super.print ();
// llamar a la clase principal static default Método
IMathOperation.version ();
return a + b;
}
}
02 El caso de múltiples métodos predeterminados
Use Java 8 para desarrollar aplicaciones. Cuando una subclase implementa múltiples interfaces, puede haber múltiples métodos predeterminados para la definición del método predeterminado de la interfaz y la interfaz El método predeterminado puede tener el mismo nombre. En este momento, generalmente se siguen tres principios al implementar o llamar a subclases:

1. El método de la clase tiene la máxima prioridad

2. Si no se puede juzgar el primer elemento, entonces la prioridad de la subinterfaz es mayor: cuando la firma de la función es la misma, se prefiere la interfaz con la implementación más específica del método predeterminado, es decir, si B hereda A, entonces B es más específico que A

3. Si aún no se puede juzgar, la clase que hereda múltiples interfaces debe mostrar la cobertura y llamar al método deseado, y elegir explícitamente qué implementación del método predeterminado usar.

El código de muestra es el siguiente:

/ **

  • Defina la interfaz del teléfono y proporcione el método de información predeterminado
    * /
    public interface Phone {
    default void info () {
    System.out.println ("This is a phone");
    }
    }
    / **
  • Defina la subinterfaz de MiPhone y herede la interfaz principal del teléfono y también proporcione el método de información
    * /
    interfaz pública MiPhone extiende el teléfono {
    default void info () {
    System.out.println ("Este es un teléfono Xiaomi");
    }
    }
    / **
  • Implementar la interfaz Phone MiPhone
    * /
    clase pública M2sPhone implementa Phone, MiPhone {
    public static void main (String [] args) {
    new M2sPhone (). Info ();
    }
    }
    Resultado de impresión:
    Este es un teléfono Xiaomi

jdk8 se ha lanzado durante mucho tiempo, y no hay duda de que java8 es la versión más importante desde java5 (lanzado en 2004). Estos incluyen nuevas funciones en lenguajes, compiladores, bibliotecas, herramientas y JVM.

Supongo que te gusta

Origin blog.51cto.com/14966610/2542497
Recomendado
Clasificación