Maison  >  Article  >  Java  >  Comment les classes internes et les classes partielles de Java implémentent-elles les fermetures ?

Comment les classes internes et les classes partielles de Java implémentent-elles les fermetures ?

王林
王林original
2024-05-02 10:45:01663parcourir

Utilisez des classes internes et des classes locales pour implémenter des fermetures en Java : Classes internes : Imbriquées dans des classes externes, elles peuvent accéder aux variables privées de la classe externe et implémenter des fermetures. Classes locales : définies dans des méthodes ou des blocs, peuvent accéder aux variables dans le bloc où elles sont créées et implémenter des fermetures. Même si la variable locale ou l'instance de classe externe n'est plus référencée, la classe interne ou locale peut toujours accéder à sa valeur, simulant ainsi le comportement de fermeture.

Java 的内部类和局部类如何实现闭包?

Implémentation de fermetures en Java à l'aide de classes internes et locales

Introduction

Les fermetures sont une fonctionnalité du langage JavaScript créée en associant une fonction à l'environnement de variable locale dans lequel la fonction a été créée. Java n'avait initialement pas de support intégré pour les fermetures, mais le comportement de fermeture peut être simulé à l'aide de classes internes et locales.

Classe intérieure

Une classe interne est une classe à l'intérieur d'une autre classe appelée classe externe. Les variables privées de la classe externe sont accessibles, implémentant ainsi des fermetures.

public class OuterClass {

    private int value = 10;

    public InnerClass getInnerClass() {
        return new InnerClass();
    }

    public class InnerClass {

        public int getValue() {
            return value;
        }
    }
}

Cas pratique

OuterClass outerClass = new OuterClass();
OuterClass.InnerClass innerClass = outerClass.getInnerClass();

// 即使外部类实例outerClass不再引用,innerClass仍可访问其值。
System.out.println(innerClass.getValue()); // 输出:10

Classe partielle

Une classe locale est une classe définie dans une méthode ou un bloc. Ils ont accès aux variables au sein du bloc dans lequel ils sont créés, implémentant ainsi des fermetures.

public class ClosureExample {

    public static void main(String[] args) {
        int value = 10;

        // 局部类可以访问value变量
        class LocalClass {
            public int getValue() {
                return value;
            }
        }

        LocalClass localClass = new LocalClass();

        // 即使局部变量value范围之外,localClass仍可访问其值。
        System.out.println(localClass.getValue()); // 输出:10
    }
}

Conclusion

Le comportement des fermetures peut être simulé en Java à l'aide de classes internes et partielles. En rendant les variables locales accessibles, nous pouvons créer des objets pouvant être référencés en dehors de la portée de l'appel de fonction.

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!

Déclaration:
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