Maison >Java >javaDidacticiel >Quel est le cycle de vie des classes internes anonymes Java ?

Quel est le cycle de vie des classes internes anonymes Java ?

王林
王林original
2024-05-01 16:06:011017parcourir

Le cycle de vie d'une classe interne anonyme est déterminé par sa portée : Classe interne méthode-locale : valable uniquement dans la portée de la méthode qui l'a créée. Classe interne du constructeur : liée à l'instance de classe externe et libérée lorsque l'instance de classe externe est libérée. Classes internes statiques : chargées et déchargées en même temps que les classes externes.

Java 匿名内部类的生命周期是怎样的?

Le cycle de vie des classes internes anonymes Java

Après la création d'une classe interne anonyme, son cycle de vie est principalement affecté par le périmètre dans lequel elle se trouve :

  • Méthode de classe interne locale : Uniquement lorsqu'il est créé Valide dans la portée de la méthode. Lorsque la méthode se termine, la classe interne et tous ses membres sont libérés.
  • Classe interne du constructeur : Après avoir créé une instance de classe externe, la classe interne du constructeur prendra effet. Lorsque l'instance de classe externe est publiée, la classe interne est également publiée.
  • Classe interne statique : La classe interne statique est chargée en même temps que la classe externe. Lorsque la classe externe est déchargée, la classe interne statique est également déchargée.

Cas pratique :

Créer une classe interne anonyme pour implémenter l'interface Comparable : Comparable 接口:

List<Integer> numbers = new ArrayList<>();

// 创建匿名内部类比较器
Comparator<Integer> comparator = new Comparator<Integer>() {
    @Override
    public int compare(Integer a, Integer b) {
        return a - b;
    }
};

// 根据比较器排序列表
Collections.sort(numbers, comparator);

在这个例子中,匿名内部类 comparator 用于对 numbers 列表进行排序。由于 comparator 是局部内部类,它只能在创建它的方法范围内使用。当 sort 方法执行完毕,comparatorrrreee

Dans cet exemple, la classe interne anonyme comparator est utilisée pour comparer la liste de numéros pour trier. Puisque comparator est une classe interne locale, il ne peut être utilisé que dans le cadre de la méthode qui l'a créé. Lorsque la méthode sort est terminée, le comparateur sera également publié. 🎜

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