Méthodes statiques dans les classes internes non statiques : Java vs Java 16
En Java, l'absence de méthodes statiques dans les classes internes non statiques les classes internes constituent une limitation de longue date. La question se pose de savoir pourquoi cette restriction existe.
Le dilemme dans Pre-Java 16
Considérez le code suivant :
<code class="java">public class Foo { class Bar { static void method() {} // Compiler error } }</code>
Tentative déclarer une méthode statique dans une classe interne non statique entraîne une erreur du compilateur. Cette limitation provient de l'association implicite entre une instance de classe interne et son instance de classe externe qui l'entoure. Puisqu'une instance de classe interne non statique appartient à une instance de classe externe spécifique, elle ne peut pas définir de méthodes statiques, qui par définition ne sont pas associées à une instance spécifique.
Classes internes statiques : l'exception
Cependant, rendre la classe interne statique résout le problème :
<code class="java">public class Foo { static class Bar { // now static static void method() {} } }</code>
Dans ce cas, la classe interne est déclarée statique, ce qui signifie qu'elle n'est pas liée à une instance spécifique de la classe externe. classe. Par conséquent, les méthodes statiques peuvent être définies au sein de la classe interne car elles ne sont pas liées à une instance particulière.
Java 16 et au-delà : suppression de la restriction
Dans Java 16, cette limitation a été levée. Les classes internes non statiques sont désormais autorisées à déclarer des méthodes statiques. Cependant, il est important de faire preuve de prudence lors de cette opération, car les méthodes statiques des classes internes partagent un nom de classe avec la classe englobante, ce qui peut entraîner des conflits de noms potentiels.
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!