Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.java > #9301

Re: controllare se un'istanza esiste già

Path csiph.com!aioe.org!.POSTED.+O+Orqo/HitXXzgkZO2Lsg.user.gioia.aioe.org!not-for-mail
From "Dr.UgoGagliardelli" <do.not.spam@me.please>
Newsgroups it.comp.java
Subject Re: controllare se un'istanza esiste già
Date Mon, 17 Jun 2019 08:19:23 +0200
Organization Aioe.org NNTP Server
Lines 49
Message-ID <qe7bfo$7pt$1@gioia.aioe.org> (permalink)
References <qe5vkm$bv6$1@gioia.aioe.org>
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

Show key headers only | View raw


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 | NextPrevious in thread | Find similar


Thread

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