Maison >Java >javaDidacticiel >Pourquoi ne pouvez-vous pas définir une méthode statique dans une classe interne non statique en Java avant la version 16 ?
Dans les versions antérieures à Java 16, tentative de définition d'une méthode statique au sein d’une classe interne non statique entraîne une erreur du compilateur. Par exemple, l'extrait de code suivant échouera :
<code class="java">public class Foo { class Bar { static void method() {} // Compiler error } }</code>
Les classes internes non statiques sont liées aux instances de leur classe englobante. Chaque instance de la classe interne a une référence cachée à son instance de classe englobante. Cela signifie que les méthodes statiques au sein de la classe interne devraient conserver une référence à la classe englobante, ce qui viole le principe de l'interface.
Pour définir des méthodes statiques au sein d'une classe interne, vous doit déclarer la classe interne comme statique. Une classe interne statique n'a pas de référence implicite à l'instance de sa classe englobante. De ce fait, il peut définir des méthodes statiques :
<code class="java">public class Foo { static class Bar { // now static static void method() {} } }</code>
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!