Il y a eu quelques questions posées ici sur pourquoi vous ne pouvez pas définir de méthodes statiques dans les interfaces, mais aucune d'entre elles n'aborde une incohérence fondamentale : pourquoi peut-on définir des champs statiques et des types internes statiques dans une interface, mais pas des méthodes statiques ?
Les types internes statiques ne sont peut-être pas une comparaison équitable, car il s'agit simplement de sucre syntaxique qui génère une nouvelle classe, mais pourquoi des champs mais pas des méthodes ?
Un argument contre les méthodes statiques dans les interfaces est que cela casse la stratégie de résolution de la table virtuelle utilisée par la JVM, mais cela ne devrait-il pas s'appliquer de manière égale aux champs statiques, c'est-à-dire que le compilateur peut simplement l'incorporer ?
La cohérence est ce que je recherche, et Java aurait dû soit ne pas supporter de statiques sous aucune forme dans une interface, soit être cohérent et les autoriser.
0 votes
Les champs sont définis alors que la méthode n'a pas de corps. Tenter d'appeler la méthode provoquera une erreur, tandis que les variables seront toujours présentes : qu'elles soient par défaut ou définies.
1 votes
bugs.sun.com/view_bug.do?bug_id=4093687 - fermé ne sera pas fixé avec plus de 200 votes, et c'était en 1997...
0 votes
@erickson - pourquoi dis-tu que c'est une réponse échouant à une interview ?
0 votes
@BoratSagdiyev Je ne le fais pas; c'était une réponse à un commentaire qui a été supprimé maintenant.