MarcoRayRaimondi ha scritto:
Come inizio ho impostato le mie classi, tra le quali:
Persona : Che restituisce un oggetto di tipo Persona;
NewSubmit : Che a mia intenzione deve imlementare una HashMap dove aggiungo la coppia <Persona,integer> dove integer è banalmente
un dato incrementale.
Partiamo da alcuni aspetti davvero elementari e basilari.
1) I nomi delle variabili (tutte, compresi i parametri) dovrebbero iniziare con la lettera
minuscola, non maiuscola. Questa è una convenzione standard di Java e inoltre serve anche per distinguere bene le variabili dai tipi (che invece iniziano di norma con la maiuscola) in modo da evitare il più possibile scenari di
obscuring (non sto adesso a spiegare cosa è).
2) Non inventarti nomi che cambiano solo nel
case, tipo numeroTel e NumeroTel. Se il campo è numeroTel, il parametro del setter (o costruttore o altro metodo) sarà numeroTel e si usa
this per qualificare il campo. Stop.
3) L'uso di un "builder" non è sbagliato, è utile quando in una classe ci sono molti attributi e tanti/tutti sono opzionali. E specialmente se gli oggetti devono essere "immutabili", pur avendo appunto molti attributi opzionali.
Generalmente però la classe del builder si chiama solamente Builder (se è una
nested class) e basta (non NewPersonaBuilder), in modo da poter fare new Persona.Builder() . In alternativa (è un "di più") si può mettere in Persona un metodo statico che tira fuori un nuovo Builder, in modo da fare semplicemente Persona.builder() .
P.S. NewSubmit come nome forse dice poco, riformula il nome, magari ...
MarcoRayRaimondi ha scritto:
l'output che ricevo è questo ( che ad occhio e croce credo essere l'indirizzo di memoria dove è allocato l'oggetto Persona associato a quell'Id ) :
PERSONA=volo.prenotazione.model.Persona@4361bd48 ID=1
Questa forma è semplicemente il risultato del toString() che è ereditato dalla classe Object, dato che NON è stato ridefinito in Persona. Quindi è sufficiente ridefinire il metodo toString() in Persona per fornire una descrizione più significativa.
E comunque c'è un'altra questione. Hai usato gli oggetti Persona come "chiavi" del HashMap. Affinché un oggetto possa funzionare bene e correttamente come chiave di un HashMap (e in generale di altre map basate su
hash-table interna), la classe dell'oggetto deve ridefinire appropriatamente i metodi
equals(Object) e
hashCode() in modo da mantenere valido il "contratto" che esiste tra questi due metodi. Nella tua classe Persona non si vede nulla a riguardo.
Ah .. e gli oggetti che si usano come "chiavi" di queste map dovrebbero essere "immutabili".
Consiglio di rivedere bene/meglio le basi di Java.