Remplacement de toString() qui rend l'utilisation de l'substituée toString()
Fondamentalement, ce est ce que je suis en train de réaliser.
classname adresse@(?)[original toString()
], nom de l'objet, de l'objet de l'âge
@Override public String toString()
{
return String.format("%s , %s , %d", this.toString(), this.getName(),this.getAge());
}
Problème, toString()
est appelée récursivement.
Je ne peux pas appeler super.toString()
parce que ce n'est pas ce que je veux. Je veux ' this
" pour appeler l'original toString()
.
Ce
this.super.toString()
ne fonctionne pas pour des raisons évidentes.
Je suis à court de vapeur, cela peut-être fait une fois qu'une méthode est surchargée? I. e. appel à la mise en œuvre d'origine ?
(mon edit) Fondamentalement, ce que j'ai besoin est: remplacer toString pour afficher deux propriétés de 'cette' objet, et je veux aussi avoir " l'appel de l'original toString.
Ce n'est pas un projet , ou de travail. Juste à jouer(en apprentissage) avec le langage Java. Grâce
- Si vous remplacez la
toString()
méthode, puis il n'y a pas d'autre mise en œuvre de celui que vous avez créer. Quel est exactement le problème avec l'appel desuper.toString()
? - Avez-vous essayé
super.toString()
(sans lethis
)? - Un double possible stackoverflow.com/questions/586363/...
- Par l'original
toString()
, voulez-vous dire une version précédente de cette méthode exacte dans cette même classe, ou lestoString()
de la classe mère? - Vous dites que vous ne souhaitez pas appeler super.toString(), vous voulez que l'instance d'appel super.toString() ... si vous avez le toString() remplacé l'appel de la méthode super.toString (), alors vous avez de l'instance d'appel de l'implémentation de base. Soit vous êtes en essayant de décrire quelque autre effet souhaité ou tout simplement de battre votre tête au-dessus de rien.
- Z ,@ Matthew Cox Oui je veux bien le toString de la classe mère. Je pense que j'ai juste besoin de super.toString() mais je l'ai essayé et je ne pense pas que cela a fonctionné. Je vais tester à nouveau.
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la recherche pour
super.toString()
.this
. Il est impossible d'appeler la super detoString
sur toute autre instance.super
fait référence à l'objet courant de la classe parent. Donc "ce" classes parent estsuper
En fait, je cherchais la même chose, où
super.toString()
n'était pas exactement ce que je voulais. Je crois que ce n'est pas possible.Plus précisément, j'ai un domaine classe Groovy/Graal, et j'ai voulu remplacer son
toString()
méthode pour ajouter quelques informations supplémentaires:Ce n'est pas identique à
return super.toString() + extra_info
. Dans un cas, j'obtiens par exemplecom.example.domain.Parent : 15, extra_info
. (Mal. L'exemple est le même, maistoString
comprend des informations de type.)Dans l'autre:
com.example.domain.Child : 15, extra_info
. (Correct, mais pas possible.)