Maison >Java >javaDidacticiel >Pourquoi les classes compilées Java ont-elles des signes dollar ?

Pourquoi les classes compilées Java ont-elles des signes dollar ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 18:54:291016parcourir

Why Do Java Compiled Classes Have Dollar Signs?

Classes compilées Java avec signes dollar

Les programmeurs Java rencontrent souvent une convention de dénomination particulière dans leurs fichiers de classe compilés. Certaines classes présentent un motif étrange de leur nom de classe suivi d'un signe dollar et d'un chiffre. Par exemple, vous pouvez voir des fichiers tels que :

  • Find$1.class
  • Find$2.class
  • Find$3.class
  • Find. classe

Plonger dans la cause

Contrairement à la croyance populaire, la taille de la classe ne déclenche pas ce comportement. La réponse réside dans les classes internes. Lorsqu'une classe contient des classes internes, le compilateur génère des fichiers de classe distincts pour ces classes internes. Le nom du fichier suit le modèle :

OuterClass.class
OuterClass$InnerClass.class

Classes internes anonymes

Les classes internes anonymes, définies sans nom personnalisé, se voient attribuer des numéros. Ceci explique "Find$1.class" et les noms de fichiers similaires.

Exemple

Considérez l'extrait de code suivant :

public class OuterClass {
    class InnerClass {
    }

    Serializable anonymous = new Serializable() {
    };
}

Le compilateur générera les fichiers de classe suivants :

  • OuterClass.class
  • OuterClass$InnerClass.class
  • OuterClass$1.class

Classes anonymes envisagées ?

L'utilisation de classes internes anonymes a fait l'objet de débats. Certains considèrent qu’il s’agit d’une odeur de code, tandis que d’autres affirment qu’elle est appropriée dans certains scénarios. En fin de compte, la décision de les utiliser est basée sur des exigences de conception spécifiques.

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