Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    instance questo sconosciuto!!! Help Me!!

    Ciao a tutti. Mi sto imbattendo in un progetto per la tesi di laurea. Ho un applicativo che realizza un webservice in Java e si interfaccia ad un terminale Android.
    Viene utilizzato un database db4o. Non riesco a capire cosa sia instance. Vi posto del codice, vediamo se riesco a farmi capire:
    classe di login che restituisce un oggetto di tipo LoginReply con status=1 se login corretto, =0 se sbagliato, poi contiene anche session, che rappresenta UUID della sessione:
    codice:
    public static LoginReply login(String username, String password) { 		
      // put code to check in database here 		
      log.info("Check for match in database for username ="+username+" password = "+password); 
      		
      String ID = RegisteredUsers.instance.checkMatch(username, password); 		
      if (ID == null) { 			
        log.info("Username or password is wrong"); 			
        return new LoginReply(0, "-1"); 		
      } 
      else { 			
        //it would be better, instead of bluntly creating new session token,  			
        //to check for session token validity in the database first 			
        //if there's no valid token, then create new token. 			
        log.info("Found matching record, create new session key for user"); 			
        return new LoginReply(1, SessionData.instance.createSessionforUser(ID)); 		
      } 	
    }
    sulla classe RegisteredUsers è:
    codice:
    public enum RegisteredUsers { 	
      instance; //singleton instance 	
      private static final String DATABASE_NAME = Configuration.getInstance().constants.getProperty("DATABASE_FOLDER")+"/RegisteredUsers"; 	
      private static final Logger log = LoggerFactory.getLogger(RegisteredUsers.class); 	
      private static ObjectServer server ; //db4o server 	
      private static boolean databaseOpen = false; // true means database server is initialized 	
      private static final Object lock = new Object(); // mutex lock 	
    
      public static String checkMatch(final String username, final String password){
        ObjectContainer db = openDatabase();
        try {
          Query query = db.query();
          query.constrain(Users.class);
          Constraint constr=query.descend("password").constrain(password);
          query.descend("username").constrain(username).and(constr);
          ObjectSet<Users> result = query.execute();
          if (!result.isEmpty()){
            result.get(0).activateRead();
            return result.get(0).ID;
          }
          else return null;	
          } finally {
            db.close();
          }		
        }
    
    //altri metodi
    }
    Cosa può essere instance? E' definita nella classe RegisteredUsers, ma non ho mai visto variabili definitie in quel modo! Qualcuno sa aiutarmi? Non ho proprio idea di cosa possa essere e me la ritrovo in motissimi punti del codice...
    E poi cos'è un singleton????

    Grazie a tutti

    Alessio

  2. #2
    Se non ricordo male il singleton instance e' per assicurare di avere una sola istanza della classe.
    Non so se e' codificata giusta nel tuo esempio. Dovresti googlare su qualche manuale java
    Gianni

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Java ha un forum dedicato che si chiama, appunto "Java".

    Sposterò la discussione nel forum indicato.

    Ti consiglio anche di dare un'occhiata al Regolamento interno per conoscere le norme di partecipazione al forum e, di conseguenza, come vanno scritti i titoli delle discussioni.

    Sposto e correggo il titolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    In quel particolare caso, essendo una enum, quella parola "instance" altri non è che uno dei possibili valori assunti dalla enum. Questo è un nome di fantasia del programmatore ed identifica una precisa istanza di quella Enum.

    In particolare, quella enum ha una ed una sola istanza, che si chiama, appunto "instance".

    Puoi consultare la documentazione ufficiale delle enum per approfondimenti.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: instance questo sconosciuto!!! Help Me!!

    Originariamente inviato da snieco
    codice:
    public enum RegisteredUsers { 	
      instance; //singleton instance 	
    
      ......
    }
    Cosa può essere instance?
    Beh, è una "enum" (da Java 5). E quel "instance" è una (la unica, tra l'altro) "costante" della enum

    es.

    codice:
    enum Mesi {
        GENNAIO, FEBBRAIO,       ............
    }
    Queste sono le "costanti" della enum.

    Quindi RegisteredUsers.instance è il riferimento all'oggetto "singleton".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Grazie mille per le risposte! Non mi ero mai imbattuto in una enum...

    Mi scuso inoltre per la posizione sbagliata della discussione! Non si ripeterà!

    Grazie

    Alessio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.