Depuis Java 8, des default
méthodes ont été introduites dans les interfaces. En fait, cela signifie que toutes les méthodes d'un interface
fichier ne le sont pas abstract
.
À partir de Java 9 (peut-être), les private
méthodes seront autorisées. Cela signifie que toutes les méthodes d'un interface
fichier 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 public
modificateur 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 abstract
ne fallait pas les utiliser car aucune méthode dans un interface
ne 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 abstract
mots 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 abstract
mots - 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.
abstract
de plus en plus compliquée. Dans Java 9, cette même phrase pourrait être: "Une méthode d'interface sans default
modificateur ou static
modificateur ou private
modificateur 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.Collection
ou 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!
default
modificateur oustatic
modificateur est implicitementabstract
... Elle est autorisée, mais déconseillé pour des raisons de style, de spécifier de manière redondante leabstract
modificateur d'une telle déclaration de méthode. " Pourquoi pensez-vous que les choses devraient changer?