Path: csiph.com!aioe.org!.POSTED.+O+Orqo/HitXXzgkZO2Lsg.user.gioia.aioe.org!not-for-mail From: "Dr.UgoGagliardelli" Newsgroups: it.comp.java Subject: =?UTF-8?Q?Re=3a_controllare_se_un=27istanza_esiste_gi=c3=a0?= Date: Mon, 17 Jun 2019 08:19:23 +0200 Organization: Aioe.org NNTP Server Lines: 49 Message-ID: References: NNTP-Posting-Host: +O+Orqo/HitXXzgkZO2Lsg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.7.1 X-Notice: Filtered by postfilter v. 0.9.2 Content-Language: it-IT X-Antivirus: Avast (VPS 190616-4, 16/06/2019), Outbound message X-Antivirus-Status: Clean Xref: csiph.com it.comp.java:9301 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 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.