Depuis Java 8, des defaultméthodes ont été introduites dans les interfaces. En fait, cela signifie que toutes les méthodes d'un interfacefichier ne le sont pas abstract.
À partir de Java 9 (peut-être), les privateméthodes seront autorisées. Cela signifie que toutes les méthodes d'un interfacefichier ne le sont pas public abstract.
La question "Les méthodes d'une interface Java doivent-elles être déclarées avec ou sans le publicmodificateur d'accès?" a été demandé à Stack Overflow sur /programming/161633/should-methods-in-a-java-interface-be-declared-with-or-without-a-public-access-m
Là, la plupart des réponses ont fait valoir qu'il public abstractne fallait pas les utiliser car aucune méthode dans un interfacene pouvait être autre chose que public abstract. Ce n'est plus le cas.
Donc, à la lumière de ces nouvelles fonctionnalités des interfaces, les public abstractmots clés doivent -ils être utilisés dans une déclaration de méthode d'interface Java?
Dans mon environnement spécifique, nous aurons des personnes qui sont des ingénieurs logiciels expérimentés, mais pas expérimentés en Java, lisant de temps en temps le code Java. Je pense que le fait de laisser de côté les public abstractmots - clés créera maintenant un point de confusion supplémentaire pour ceux qui ne connaissent pas l'histoire de la façon dont les interfaces en sont venues à avoir des règles différentes pour utiliser ces mots-clés.
abstractde plus en plus compliquée. Dans Java 9, cette même phrase pourrait être: "Une méthode d'interface sans defaultmodificateur ou staticmodificateur ou privatemodificateur est implicitement abstraite ..." En outre, les arguments auxiliaires pour ne pas utiliser explicitement les mots-clés, à savoir que toutes les méthodes d'interface sont public abstract, sont maintenant sans objet.
streamà java.util.Collectionou Map.getOrDefault(). L'alternative est de créer une nouvelle sous-interface, et d'amener tout le monde à abattre, comme Graphics2D, et personne n'a apprécié cela!
defaultmodificateur oustaticmodificateur est implicitementabstract... Elle est autorisée, mais déconseillé pour des raisons de style, de spécifier de manière redondante leabstractmodificateur d'une telle déclaration de méthode. " Pourquoi pensez-vous que les choses devraient changer?