Definire toString()

di il
3 risposte

Definire toString()

Salve ragazzi ho un problemino col toString()...allora in una classe ho due costruttori uno con 4 parametri e l'altro con due... all'inizio ho definito il toString() in questo modo:
public String toString()
	{		
	
			return "Matricola : "+matricola+" Cognome: "+ cognome +" Nome: " +nome +" Data: "+data +"\n";
				
	}


e andava bene fino a quando non ho avuto bisogno di richiamare il metodo sul costruttore con due parametri...qualcuno può aiutarmi a definire il toString() in modo tale che quando mi serve su un costruttore fa una cosa e quando sull'altro ne fa un'altra???
grazie a tutti!

3 Risposte

  • Re: Definire toString()

    isanet ha scritto:


    qualcuno può aiutarmi a definire il toString() in modo tale che quando mi serve su un costruttore fa una cosa e quando sull'altro ne fa un'altra???
    I costruttori, a dire il vero, non c'entrano nulla con toString(), cioè non è rilevante "sapere" come (e con quale costruttore) viene costruito l'oggetto.
    Nella classe hai un tot di campi, li hai sempre. Alcuni possono avere un valore di default (es. null). Se nel toString() vuoi escludere campi che hanno ad esempio un valore null ... puoi farlo tranquillamente.
    Cioè la logica di costruzione della stringa nel toString() la stabilisci tu ... non in base a quale costruttore viene poi utilizzato!
  • Re: Definire toString()

    Si ho capito quello che dici tu però non so come perfezionarlo in modo tale che quando vado a stampare mi stampa quello che ho bisogno. Dimmi se hai bisogno di vedere la classe e la posto così magari puoi aiutarmi meglio...se ti va
  • Re: Definire toString()

    isanet ha scritto:


    però non so come perfezionarlo in modo tale che quando vado a stampare mi stampa quello che ho bisogno.
    Ma dipende appunto da cosa hai bisogno nella stringa ....

    La stringa dal toString() generalmente ha una forma "tecnica", non necessariamente per l'utente finale (spesso viene usata solo nel logging o cose del genere). Ci sono casi (ad esempio in Swing) in cui il risultato del toString() viene proprio visualizzato all'utente come dato significativo.

    Ma a parte questo, tu hai N campi nell'oggetto, nel toString() puoi considerarli o tutti o solo alcuni. Eventualmente anche in base al loro valore. Quindi non capisco bene il tuo dubbio. Costruisci una stringa (in qualunque modo, concatenazione con +, o con StringBuffer/Builder, ecc..) ed eventualmente salta i campi che non vuoi o che hanno un certo valore (es. null).
Devi accedere o registrarti per scrivere nel forum
3 risposte