Cómo Comparador de interfaz en Java 8 se convierta en un @FunctionalInterface

Das ritmo:

Me gustaría aclarar mi comprensión de @FunctionalInterfaceun poco. Por lo que yo sé, podemos añadir una anotación @FunctionalInterface en una interfaz que sólo tiene un método abstracto (Puede tener por defecto múltiple y métodos estáticos sin embargo.

En Java 8, Comparator<T>la interfaz ha sido marcado con @FunctionalInterface para que pueda ser utilizado en la expresión Lambda pero cuando abrí la definición, pude ver 2 clase abstracta que hay

int compare(T o1, T o2); y boolean equals(Object obj);

Me gustaría entender cómo es posible tener más de 2 métodos abstractos en la interfaz funcional y todavía no conseguir algún error? ayudarme a aclarar mis entendimientos en esto.

Gracias completo Guy:

Su pregunta se responde en los documentos de Java de la @FunctionalInterfaceanotación:

Si una interfaz declara un método abstracto anulando uno de los métodos públicos de java.lang.Object, que además no cuenta para el recuento abstracta método de la interfaz desde cualquier implementación de la interfaz tendrá una implementación de java.lang.Object o en otro lugar.

Así presencia de la presencia de boolean equals(Object obj);la interfaz Comparador no se suma a la cuenta de los métodos abstractos presentes en la interfaz y así podemos aplicar @FunctionalInterfacea esta interfaz.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=178174&siteId=1
Recomendado
Clasificación