Comment imprimer le nom de la variable contenant un objet?
Comment puis-je imprimer le nom de la variable tenant mon objet?
Par exemple, j'ai:
myclass ob=new myclass()
Comment puis-je imprimer "ob"?
source d'informationauteur Bipin Sahoo
Vous devez vous connecter pour publier un commentaire.
Les objets ne sont pas ont noms, à moins que vous arrive d'être en utilisant une classe qui permet à chaque objet donné (par exemple via une variable récupérée avec
getName()
).En particulier, le nom d'une variable utilisée pour faire référence à un objet est complètement inconnue de l'objet lui-même. Si vous ne pouvez pas faire:
(Gardez à l'esprit que plusieurs variables peuvent tous se réfèrent au même objet, et il n'ont pas à être tout nommé variables se référant à un objet).
Pour imprimer le type d'objet nom:
System.out.println();
Est la commande utilisée pour imprimer à la console.Donc, si vous avez votre propre classe que vous avez créé et instancié, vous pouvez faire:
et qui permettrait d'imprimer la
toString()
mise en œuvre deMyObject
. L'implémentation par défaut n'est pas très intéressant, donc pour info utile, vous devez remplacer lestoString()
.Un peu plus complète (mais essentiellement le même que ci-dessus):
object.getClass().getName()
vous donnera le nom complet de l'objet (c'est à direpackage.className. Par exemple, String = new String(); chose.getClass().getName() sera de retour "de java.lang.Chaîne".className.class.getName()
vous donnera le nom complet de l'objet (c'est à direpackage.className. Par exemple. Chaîne de caractères.classe.getName() sera de retour "de java.lang.Chaîne".Imprimer la façon dont vous le voulez. Peut-être en utilisant le Système..println().
Le nom de la variable est le temps de compilation d'informations qui ne sont généralement pas conservée après la compilation. Le nom de la variable est stockée si vous compilez avec les informations de débogage.
Dans mamy contextes, il est ridicule de demander à vouloir imprimer le nom d'une variable, mais si vous avez vraiment besoin de le faire, de lire sur java les informations de débogage.
Solution de contournement. Si vous voulez le nom de l'objet, alors vous pouvez l'initialiser dans le constructeur.
Je suis en supposant que vous voulez un moyen "d'imprimer" un objet, dans ce cas, vous devrez d'abord de vouloir remplacer les
toString()
méthode de votre objet. Cela vous permettra de préciser ce qu'est un objet de type retourne lorsque vous appeleztoString().
Ensuite, vous pouvez simplement faire
System.out.println(MyObject);
Ce sera implicitement appel Monobjet est
toString()
.Vous ne pouvez pas obtenir le nom de l'objet de référence. Au lieu de cela, vous pouvez obtenir son hashcode ou d'un comptoir.
- Je résoudre ce problème comme suit:
De sortie:
Cela permet d'obtenir le résultat voulu, mais c'est un peu un fudge, en ce que si la chaîne de caractères retournée par toString() est de refléter le nom de votre variable (qui, bien sûr, seulement vous, en tant que programmeur va savoir), vous devez utiliser la convention que la méthode utilise c'est à dire dans cette mise en œuvre, car la chaîne de retour est dans le format ClassName+compteur, vous avez le nom de votre variable à l'aide de ce format: myClass1, myClass2, etc. Si vous avez le nom de votre variable d'une autre façon (par exemple, className+A/B/C, etc ou someRandomVariableName) bien que la chaîne de retour qui serait mis en œuvre par la méthode toString() c'est à dire le retour myClass1, myClass2, etc, il ne reflète pas le nom de la variable que vous avez réellement utilisé dans votre code.