java compilé classes contiennent des signes dollar
J'ai été en utilisant Eclipse comme mon IDE de développement. J'ai aussi l'utiliser pour exporter ma demande en une .fichier jar. Quand je regarde mes classes dans le .fichier jar, quelques-uns de mes classes contiennent le nom de la classe, un signe de dollar, puis un certain nombre. Exemple:
- Trouver$1.class
- Trouver$2.class
- Trouver$3.class
- Find.class
J'ai remarqué cela sur de plus grandes classes. Est-ce parce que les classes d'obtenir de si grand, il compile en plusieurs classes? J'ai googlé et regardé sur plusieurs forums, et de la recherche, de la Documentation de Java, mais n'ont rien trouvé de même lié à elle. Quelqu'un pourrait-il m'expliquer?
- Exemple de code pour tester ce problème github.com/Aksi0m/SampleFor123686419
- Conformément à la réponse de l'équipe de google issuetracker.google.com/issues/123736741, c'est fixé en interne et sera disponible dans la prochaine version de Navigation.
Vous devez vous connecter pour publier un commentaire.
Les classes internes, le cas échéant présents dans votre classe, seront compilées et le fichier de classe sera
ClassName$InnerClassName
. Dans le cas de l'Anonyme intérieur des classes, il apparaît que des chiffres. La taille de la Classe (Code Java) ne conduit pas à la génération de plusieurs classes.E. g. compte tenu de ce morceau de code:
Les Classes qui vont être générés seront:
TestInnerOuterClass.class
TestInnerOuterClass$TestInnerChild.class
TestInnerOuterCasss$1.class
Mise à jour:
À l'aide de la classe anonyme n'est pas considéré comme une mauvaise pratique ,tout dépend de l'utilisation.
Vérifier cette débat sur ce
C'est parce que vous avez anonyme des cours au sein de cette grande classe. Ils ont compilé à l'aide de cette convention de nommage.
Voir La Classe Anonyme Énigme
Outre les cas mentionnés ci-dessus présenté par @mprabhat, les autres cas pourraient être:
Ces cas sont des dérivations de mon inspection .les fichiers de classe dans le bocal.
Pour répondre à votre commentaire au sujet de l'anonymat à des classes de mauvais. Ils sont la plupart certainement pas.
Considérez ceci pour attribuer une action auditeur à un JButton:
ou pour un casse trier par la propriété "name"
Vous verrez aussi beaucoup de Exécutables, et Appelable à fait anonyme classes.