tecnología de la base de Java para leer 10 (d) - la interfaz, las expresiones lambda, y las clases internas

concepto de interfaz

Interfaz proporciona más funcionalidad para el objeto. métodos de interfaz son automáticamente pertenecen al público . Por lo tanto, cuando se declaran en el método de interfaz, no proporcionan una palabra clave. Y la interfaz no puede contener campos de instancia.
Clase debe implementar el método de interfaz correspondiente , y declaró públicas, el método por defecto en el paquete de clase visible.
Por ejemplo, desea llamar a la función del objeto especie, es necesario tener una interfaz similar y requiere métodos de interfaz de clases específicas para lograr comparables. Llamar para ordenar: Aarry.sort (Objeto)

La razón principal es que la interfaz requiere lenguaje de programación Java es un lenguaje fuertemente tipado (inflexible). En sintonía tiempo con un método, el compilador comprobará si existe este método . Y la interfaz asegura la existencia de este tipo de variables método.

Interfaz no se ajusta ** reglas "simétricas" **. Si x es un objeto Empleado, y es un objeto de administrador,
llame x.compareTo (y) no lanzar una excepción, es sólo la x e y son como empleado para la comparación. Sin embargo, a su vez,
y.compareTo (la dirección X) arrojará una ClassCastException. Las soluciones son las siguientes:
(1) la comparación entre el significado de la subclase no es lo mismo , es ilegal para comparar diferentes clases de objetos. Cada método compareTo debe ser detectado en el inicio de la siguiente: Si (getClassO = other.getClassO!) La banda nueva nueva ClassCastExceptionO;
(2) si la comparación como el significado , si la presencia de un algoritmo general de este tipo, es posible para dos sub diferente objetos de clase están en comparación, deben proporcionar un método compareTo en la superclase y declaran este método es final,

Características de la interfaz

Interfaces, y puede definir las variables de interfaz objeto referenciado que implementa la clase de interfaz. Puede ser utilizado instanceof objetivo de detección de tipo de interfaz
de una interfaz puede heredar expandir, utilizando el mismo tipo y la extiende .. En segundo lugar, el dominio de interfaz se establece automáticamente como public static final, es decir, constante.

Permite aumentar los métodos estáticos en la interfaz, pero la interfaz y expandir la mente no es lo mismo.

El método de interfaz que proporciona una implementación por defecto . Usted debe estar etiquetado por defecto modificador método tal. El valor por defecto método será cubierto , pero en algunos casos más útil, permitiendo a los usuarios que preocuparse de algunos de los métodos. El método por defecto puede interactuar con otras llamadas a métodos .

La interfaz tiene un número correspondiente de clases asociadas , los respectivos implementos de clase asociados algunos o todos los métodos de interfaz , tales como CoUection / AbstractCollectkm o MouseListener / MouseAdapter. En JavaSE 8, la tecnología se ha vuelto obsoleta. El método ahora se puede conseguir directamente en la interfaz. = "A medida que el método predeterminado de la interfaz puede garantizar que el código fuente compatible .

El método predeterminado para resolver el conflicto : (1) la prioridad superclase (2) que cubre la interfaz para resolver el conflicto, si hay al menos una interfaz proporciona una implementación, el compilador informará de un error, pero el programador debe resolver esta ambigüedad .

objeto java se logra mediante el uso de la devolución de llamada clase requiere el objeto pertenece implementos objeto de devolución de llamada pasado la interfaz pertenece.
Hay un segundo método de versión Arrays.sort, hay una matriz y un comparador ( Comparador ), para lograr una comparación de encargo, utilizando el objeto de pasar proceso especie Comparador. Esto invocará palabras [i] .compareTo (palabras [ j]) para la comparación. Para comparar este método en comparación objeto
de llamar, en lugar de recurrir a la propia cadena

clonación de objetos

¿Por qué objeto no puede acceder al método clone protegida heredado de Objeto más?
Ámbito paquete de Java // afectará a las restricciones de acceso protegidos y por defecto. Protegida restaurar las propiedades originales en diferentes paquetes, y el valor predeterminado es promovido privado.
Para los miembros o método protegido, a la clase molecular y la superclase está en el mismo paquete. Y no en paquete de la misma clase base subclase, sólo puede acceder a su cuenta heredada de los miembros protected de la clase base , pero no puede acceder a la instancia de clase propia base protegida miembros (por ejemplo anObeject.clone)). Cuando el mismo paquete, protegido y público es el mismo. De hecho, el objeto puede llamar al método Clone, seguido de la llamada al método solitario tiene una disposición especial

/**
     * @return     a clone of this instance.
     * @throws  CloneNotSupportedException  if the object's class does not
     *               support the {@code Cloneable} interface. Subclasses
     *               that override the {@code clone} method can also
     *               throw this exception to indicate that an instance cannot
     *               be cloned.
     * @see java.lang.Cloneable
     */
    @HotSpotIntrinsicCandidate
    protected native Object clone() throws CloneNotSupportedException;

Método Object.clone () es un método nativo, En pocas palabras, un método nativo es un no-llamada interfaz Java Java código. La tasa general de método nativo para ser mucho más rápido que su propia velocidad programa escrito en funcionamiento, por lo que cuando queremos operación de clonación en un objeto, se recomienda utilizar el método Object.clone () más que por su propio código para Java para conseguir la función tal (aunque también se puede lograr los resultados deseados).
contenido detrás @throws explicó si una clase no implementa la interfaz Cloneable o una subclase de tratar de reemplazar el método clon lanza una excepción CloneNotSupportedException la
fuente original: https: //blog.csdn.net/qq_41409138/article/details/86762163

Cloneable interfaz es proporcionada por un conjunto de Java interfaz de marcador , la interfaz no contiene ningún método de marcado; se permite su único papel en la consulta de tipo instanceof.
Objetos para la clonación era "paranoica", si una solicitud de clon objeto, pero no implementa esta interfaz, se
generará una excepción comprobada.

expresión Lambada

bloques de código de programación funcionales pueden ser procesados directamente, por ejemplo, que contiene funciones de entrada del ratón de manejo de eventos.
expresión lambda es un bloque de ejecución de código, las variables que deben descendiente códigos y especificaciones .
expresión lambada es método abreviado equivalente de objetos de la interfaz, sin tener que definir objetos de interfaz. En otras palabras, las expresiones lambda son compatibles con estas interfaces ,
sólo el método abstracto de una interfaz, cuando en la necesidad de tales interfaces puede proporcionar una expresión lambda
tipo. Esta interfaz se llama función de interfaz

, por ejemplo, es la única interfaz a un método Comparator, interfaz comparador puede ser escrito:
Arrays.sort (planetas, (primero, segundo) -> Primera .lengt () - SEGUNDO .length ()); / / planetas es una cadena, la primera y segunda variables estimadas como un objeto de cadena

Temporizador t = new Timer (1000, Systei.out :: println);
expresión System.out :: println es un método de referencia (método de referencia), que es equivalente a una expresión lambda x> System.out.println (x )

referencias del constructor y referencias método es muy similar, pero un método llamado nuevo. Por ejemplo, la persona :: nuevo es una referencia al constructor persona. Qué constructor hacer? Dependiendo del contexto.
Java tiene un límite, no se puede construir una matriz de tipo T genérico, la expresión nueva T [n] producirá un error, ya que se puede cambiar a la nueva nueva Object [el n-] .

expresión lambda tiene tres partes:
1) un bloque de código;
2) parámetros;
3) el valor de las variables libres, que se refiere a las variables no paramétricas y no está definido en el código. Y un bloque libre en un plazo valores de las variables: el cierre (cierre). lambda es un cierre . En lambda expresiones, puede solamente el valor de referencia no va a cambiar las variables.

expresión lambda variables efectivamente debe ser capturado en la variable final (effectivelyfinal).
expresiones lambda anidado cuerpo de bloque y tienen el mismo ámbito de aplicación.

expresión lambda clave es una ejecución retardada (ejecución diferida).

comparador de interfaz contiene muchos métodos estáticos convenientes para crear un comparador. Por ejemplo:
Arrays.sort (personas, Comparator.comparing (la persona :: getLastName) .thenConiparing (Pe rson :: getFirstName));

Publicado 15 artículos originales · ganado elogios 1 · visitas 133

Supongo que te gusta

Origin blog.csdn.net/qq_17236715/article/details/103842197
Recomendado
Clasificación