Comenzando con Java 8, los defaultmétodos se introdujeron en las interfaces. Efectivamente, esto significa que no todos los métodos en un interfaceson abstract.
Comenzando con Java 9 (tal vez), privatese permitirán métodos. Esto significa que no todos los métodos en un interfaceson public abstract.
La pregunta "¿Deberían declararse los métodos en una interfaz Java con o sin el publicmodificador de acceso?" se le preguntó en Stack Overflow en /programming/161633/should-methods-in-a-java-interface-be-declared-with-or-without-a-public-access-m
Allí, la mayoría de las respuestas argumentaron que public abstractno debería usarse porque ningún método en un interfacepuede ser otro que no sea public abstract. Ese ya no es el caso.
Entonces, a la luz de estas nuevas características de las interfaces, ¿deberían public abstractusarse las palabras clave en una declaración de método de interfaz Java?
En mi entorno específico, tendremos personas que son ingenieros de software con experiencia, pero que no tienen experiencia en Java, que leen código Java de vez en cuando. Siento que omitir las public abstractpalabras clave ahora creará un punto adicional de confusión para aquellos que no están familiarizados con el historial de cómo las interfaces llegaron a tener diferentes reglas para usar estas palabras clave.
abstractestá volviendo cada vez más complicada. En Java 9, esa misma oración podría ser: "Un método de interfaz que carece de un defaultmodificador o un staticmodificador o un privatemodificador es implícitamente abstracto ..." Además, los argumentos auxiliares para no usar explícitamente las palabras clave, a saber, que todos los métodos de interfaz son public abstract, ahora son discutibles.
streamto java.util.Collection, o Map.getOrDefault(). ¡La alternativa es crear una nueva subinterfaz y hacer que todos se depriman, como Graphics2D, y nadie lo disfrutó!
defaultmodificador o unstaticmodificador es implícitamenteabstract... Está permitido, pero desaconsejado como cuestión de estilo, especificar redundantemente elabstractmodificador para tal declaración de método ". ¿Por qué esperas que las cosas cambien?