Maison > Java > javaDidacticiel > Pourquoi les interfaces Java ne pouvaient-elles pas avoir de méthodes statiques avant Java 8 ?

Pourquoi les interfaces Java ne pouvaient-elles pas avoir de méthodes statiques avant Java 8 ?

Patricia Arquette
Libérer: 2024-12-14 08:37:10
original
795 Les gens l'ont consulté

Why Couldn't Java Interfaces Have Static Methods Before Java 8?

Pourquoi les interfaces Java n'autorisent pas les méthodes statiques

Mise à niveau Java 8

Depuis Java 8, les interfaces prennent désormais en charge les méthodes statiques. De plus, elles peuvent avoir des méthodes d'instance concrètes mais pas de champs d'instance.

Historique et raisons techniques

Dans les versions antérieures de Java, les interfaces ne pouvaient pas contenir de méthodes statiques pour les raisons suivantes :

  • Faisabilité technique : Initialement considérée comme un changement de langage mineur, la proposition d'ajouter des méthodes statiques aux interfaces dans Java 7 rencontrée complications imprévues.
  • Redondance : Les méthodes statiques dans les interfaces n'étaient pas vraiment nécessaires car l'appel d'une méthode statique nécessite une classe, qui est connue statiquement au moment de la compilation.

Méthodes statiques vs remplacement

Les méthodes statiques ne peuvent pas être remplacées car elles sont résolues au moment de la compilation. La répartition dynamique est utilisée pour les méthodes d'instance lorsque le compilateur ne peut pas déterminer le type concret de l'objet et ne peut donc pas résoudre la méthode à invoquer. Cependant, comme les méthodes statiques nécessitent une classe connue, elles peuvent être résolues de manière statique, ce qui rend la répartition dynamique inutile.

En d'autres termes, si une superclasse et une sous-classe ont toutes deux des méthodes statiques avec la même signature, la méthode de la sous-classe sera toujours être invoqué en premier, en remplaçant la méthode de la superclasse. Cependant, cela est conceptuellement redondant car on peut toujours spécifier la classe contenant la version souhaitée de la méthode statique.

Constructeur "Interfaces"

Concernant votre préoccupation supplémentaire concernant l'application d'une méthode de type constructeur pour IXMLizing, considérez ce qui suit :

  • La dénomination explicite du type concret garantit que le constructeur peut être vérifié lors de la compilation time.
  • IXMLizing définit le comportement attendu de l'interface, et les exigences de construction supplémentaires sont des détails d'implémentation.
  • Le code travaillant avec l'interface ne nécessite pas de connaissance du constructeur, tandis que le code nécessitant le constructeur doit savoir le type béton en tout cas.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal