Plusieurs classes les mêmes ? (en java)
Résolu
tnorange
Messages postés
7
Statut
Membre
-
tnorange Messages postés 7 Statut Membre -
tnorange Messages postés 7 Statut Membre -
Bonjour !
Je me posait une question auquel aucune réponse n'a été apporté !
Pourquoi dans un projet java il y a plusieurs fois la même classe avec des noms différents, est-ce un problème ou pas ?
exemple :
Interface$1.class
Interface$2.class
Interface$3.class
Interface$4.class
Interface$5.class
Interface$6.class
Interface$7.class
Interface$8.class
Interface$9.class
Interface$10.class
Interface$11.class
Interface$12.class
Interface$13.class
Interface$14.class
Interface$15.class
Interface$16.class
Interface$17.class
Interface$18.class
Interface$19.class
Interface$20.class
Interface$21.class
Interface$22.class
Interface$23.class
Interface$23.class
(Et dans mon projet, il n'y a qu'une seule classe interface ?)
ou encore dans le même projet :
TestL1P1$1.class
TestL1P1$2.class
TestL1P1$3.class
Est-ce que quelqu'un serait pourquoi il a ça ?
Est-ce un problème ou pas ?
Je me posait une question auquel aucune réponse n'a été apporté !
Pourquoi dans un projet java il y a plusieurs fois la même classe avec des noms différents, est-ce un problème ou pas ?
exemple :
Interface$1.class
Interface$2.class
Interface$3.class
Interface$4.class
Interface$5.class
Interface$6.class
Interface$7.class
Interface$8.class
Interface$9.class
Interface$10.class
Interface$11.class
Interface$12.class
Interface$13.class
Interface$14.class
Interface$15.class
Interface$16.class
Interface$17.class
Interface$18.class
Interface$19.class
Interface$20.class
Interface$21.class
Interface$22.class
Interface$23.class
Interface$23.class
(Et dans mon projet, il n'y a qu'une seule classe interface ?)
ou encore dans le même projet :
TestL1P1$1.class
TestL1P1$2.class
TestL1P1$3.class
Est-ce que quelqu'un serait pourquoi il a ça ?
Est-ce un problème ou pas ?
A voir également:
- Plusieurs classes les mêmes ? (en java)
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
1 réponse
Bonjour,
Ce sont des classes anonymes. Cela arrive lorsque tu fais par exemple un code Swing comme ceci :
Au moment de la compilation Java remplace ce code par un autre plus ou moins équivalent que l'on pourrait transcrire comme ceci :
Tes classes anonymes $1, $2, $3 sont donc tout à fait normales. Tu pourras également trouver des .class nommés "Interface$Toto" si tu fais par exemple :
Dans ce cas ce ne sont plus des classes anonymes (vu qu'elles ont un nom) c'est ce que l'on appelle des classes internes.
Remarque : il est tout à fait possible de voir des classes locales (internes ou anonymes) imbriquées de telle sorte que l'on ait plusieurs $ dans un même nom de fichier .class
Exemple :
Note : vu que le $ est utilisé en interne par Java, il vaut mieux éviter de l'utiliser soi même dans ses noms de classes, méthodes ou variables, même s'il est autorisé par le compilateur.
Ce sont des classes anonymes. Cela arrive lorsque tu fais par exemple un code Swing comme ceci :
JButton button = new JButton("Ok"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println(e); } }
Au moment de la compilation Java remplace ce code par un autre plus ou moins équivalent que l'on pourrait transcrire comme ceci :
public class MaClasse$1 implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println(e); } } JButton button = new JButton("Ok"); button.addActionListener(new MaClasse$1());
Tes classes anonymes $1, $2, $3 sont donc tout à fait normales. Tu pourras également trouver des .class nommés "Interface$Toto" si tu fais par exemple :
public class Interface { public static class Toto { } }
Dans ce cas ce ne sont plus des classes anonymes (vu qu'elles ont un nom) c'est ce que l'on appelle des classes internes.
Remarque : il est tout à fait possible de voir des classes locales (internes ou anonymes) imbriquées de telle sorte que l'on ait plusieurs $ dans un même nom de fichier .class
Exemple :
import java.awt.event.*; import java.util.*; import javax.swing.*; public class Test // Test.class { public static class Toto // Test$Toto.class { JButton button; List<String> list; public Toto() { list = new ArrayList<String>(); button = new JButton("Trier"); button.addActionListener(new ActionListener() // Test$Toto$1.class { // Test$Toto$1$1.class private Comparator<String> comp = new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.compareToIgnoreCase(s2); } }; @Override public void actionPerformed(ActionEvent e) { Collections.sort(list, comp); } }); } } }
Note : vu que le $ est utilisé en interne par Java, il vaut mieux éviter de l'utiliser soi même dans ses noms de classes, méthodes ou variables, même s'il est autorisé par le compilateur.
tnorange
Messages postés
7
Statut
Membre
Merci pour ton explication qui est précise :) Bonne soirée !