Pourquoi ce panneau de texte me donne-t-il une adresse mémoire?
Question
Il s'agit d'un bouton de fonction d'annulation sur une calculatrice en cours d'écriture. annuler est le bouton Status est une classe qui détient mon statut. listOfStates est une ArrayList of Status. displayBox est un objet de JTextFeild. Ce que je ne comprends pas, c’est que lorsque j’affiche previousState dans la zone de texte, j’obtiens un résultat du type: Status @ 11dc088. Je sais qu'il me manque de lancer quelque chose ici. Merci pour toute aide.
if(e.getSource() == undo)
{
Status previousState = (Status) listOfStates.get(listOfStates.size()- 1);
displayBox.setText(" ");
displayBox.setText(displayBox.getText() + previousState);
System.out.println(previousState);
}
La solution
Status est une classe personnalisée et vous n'avez pas implémenté de méthode toString (). Vous obtenez donc la méthode Object default toString ().
Remplacez la méthode toString () dans la classe Status pour renvoyer une chaîne significative.
Ou utilisez une méthode de votre classe telle que previousState.getStatus () pour utiliser la propriété appropriée de votre classe.