Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | "Dr.UgoGagliardelli" <do.not.spam@me.please> |
|---|---|
| Newsgroups | it.comp.java |
| Subject | Re: controllare se un'istanza esiste già |
| Date | 2019-06-17 08:19 +0200 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <qe7bfo$7pt$1@gioia.aioe.org> (permalink) |
| References | <qe5vkm$bv6$1@gioia.aioe.org> |
Il 16.06.2019 19.52, Sergio ha scritto:
> 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
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.
Back to it.comp.java | Previous | Next — Previous in thread | Find similar
controllare se un'istanza esiste già Sergio <vannnnia1991@gmail.com> - 2019-06-16 19:52 +0200 Re: controllare se un'istanza esiste già "Dr.UgoGagliardelli" <do.not.spam@me.please> - 2019-06-17 08:19 +0200
csiph-web