Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

controllare se un'istanza esiste già

11 views
Skip to first unread message

Sergio

unread,
Jun 16, 2019, 1:52:27 PM6/16/19
to
Come si fa ad imporre che le istanze di una classe siano uniche ?

Esempio :

public class esegui{

public static void main(String []args){
Persona p1 = new Persona( "ggg");
Persona p2 = new Persona( "kkk");
Persona p3 = new Persona( "ggg");
}
}


class Persona{
String CF ;

public Persona(String cf){
CF = cf;
}
}

Il codice mi crea le tre persone, ma due hanno lo stesso codice fiscale
ggg e non va bene,dovrebbe avvertirmi che ho un cliente duplicato
mentre lo creo!

Grazie

Dr.UgoGagliardelli

unread,
Jun 17, 2019, 2:20:42 AM6/17/19
to
Senza un controllore ad-hoc la vedo dura. Il controllore potrebbe essere
una classe 'factory' che si 'ricordi' le istanze create e restituisca
l'istanza verificata. Oppure potresti realizzare una variabile di classe
(quindi statica) nella stessa classe Persona che faccia il controllo di
cui sopra, ad esempio:

class Persona{
public static final PERSONE = new TreeSet<String>();
String CF ;
public Persona(String cf) {
controlla(cf)
CF = cf;
}
private synchronized void controlla(String cf) {
if (PERSONE.contains(cf))
throw new IllegalArgumentException("Esiste già "+cf);
PERSONE.add(cf);
}
}

Ovviamente il tuo metodo main dovra' gestirsi l'eventuale eccezione.
0 new messages