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


Groups > it.comp.java > #9301

Re: controllare se un'istanza esiste già

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>

Show all headers | 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