Repenser les méthodes d'interface statique en Java
Traditionnellement, la définition de méthodes statiques dans les interfaces Java était interdite. Cependant, Java 8 a supprimé cette restriction, permettant aux interfaces de posséder des méthodes d'instance statiques et concrètes. Cet article examine les raisons techniques de l'interdiction précédente et clarifie la justification de l'autorisation actuelle.
Méthodes statiques dans les interfaces
Initialement, l'inclusion de méthodes statiques dans les interfaces n’étaient pas considérées comme un changement de langue hautement prioritaire. Une proposition ultérieure visant à les ajouter dans Java 7 a été abandonnée en raison de complexités imprévues. Cependant, avec l'avènement de la prise en charge des expressions lambda par Java 8, des méthodes d'interface statiques ont été introduites ainsi que des méthodes d'instance remplaçables.
Remplacer les méthodes statiques
Même si les interfaces peuvent ont maintenant des méthodes statiques, elles ne peuvent pas être remplacées. En effet :
Interfaces de constructeur
Bien que le langage Java interdise d'appliquer des méthodes de type constructeur dans les interfaces, il est possible d'obtenir des fonctionnalités similaires en utilisant des classes concrètes. En exigeant une dénomination explicite du type concret lors de la création de nouvelles instances, le compilateur peut garantir que la classe adhère à l'exigence souhaitée.
Conclusion
Méthodes statiques dans les interfaces Java offrent un mécanisme pratique pour définir les fonctionnalités et les utilitaires au niveau de la classe. Toutefois, en raison de la nature de la résolution des méthodes statiques, le remplacement des méthodes statiques au sein des sous-classes n’est pas pris en charge. L'application de méthodes de type constructeur au sein des interfaces, bien que tentante, n'est pas un modèle de conception approprié pour garantir la cohérence entre les implémentations.
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!