Maison > Java > javaDidacticiel > le corps du texte

Pourquoi ne pouvez-vous pas définir une méthode statique dans une classe interne non statique en Java avant la version 16 ?

Patricia Arquette
Libérer: 2024-10-28 04:43:30
original
742 Les gens l'ont consulté

Why Can't You Define a Static Method in a Non-Static Inner Class in Java Prior to Version 16?

Méthodes statiques dans les classes internes non statiques antérieures à Java 16

Problème

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>
Copier après la connexion

Explication

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.

Solution

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>
Copier après la connexion

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!