Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Classe Vector

  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026

    Classe Vector

    Buongiorno.
    Ho creato una classe Persona ed un contenitore di tipo Vector.
    Vorrei stampare tutti i valori contenuti in Vector.
    Classe Persona:
    codice:
    package Persona;
     public class Persona {
           private String nome="";
          private String cognome="";
              
          public Persona(String nome, String cognome) {
                super();
                this.nome = nome;
                this.cognome = cognome;
          }
          public String getNome() {
                return nome;
          }
          public void setNome(String nome) {
                this.nome = nome;
          }
          public String getCognome() {
                return cognome;
          }
          public void setCognome(String cognome) {
                this.cognome = cognome;
          }     
    }
    Test:
    codice:
    package Persona;
     
    import java.util.Iterator;
    import java.util.Vector;
     
    public class TestPersona {
     
          public static void main(String[] args) {
     
                Persona p1 = new Persona("Zio", "Paperone");
                Persona p2 = new Persona("Renato", "Zero");
                Persona p3 = new Persona("Pippi", "Calzelunghe");
     
                Vector vp = new Vector();
     
                vp.add(p1);
                vp.add(p2);
                vp.add(p3);
                Iterator i = vp.iterator();
                int inc = 0;
                while (i.hasNext()) {
                      System.out.println(i.next());
                } 
          } 
    }
    Risultato console:
    codice:
    Persona.Persona@52e922
    Persona.Persona@25154f
    Persona.Persona@10dea4e

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ironmax Visualizza il messaggio
    Risultato console:
    codice:
    Persona.Persona@52e922
    Persona.Persona@25154f
    Persona.Persona@10dea4e
    Per questo output, non c'entra affatto Vector. Stai passando un oggetto a println, che invoca toString() sull'oggetto. Ma la tua classe Persona NON fa un "override" del metodo toString(), quindi rimane quello ereditato da Object ... che è in grado di fornire solo quella forma.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Aggiungo anche che la classe Vector, come tutto il collections framework, da Java 5 è stata resa generica e andrebbe tipizzata:


    codice:
    Vector<Persona> vp = new Vector<Persona>();


    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
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Una piccola mano per stampare tutto correttamente?
    Grazie.
    P.s.:Sto leggendo un libro con versione precedenti ai generics

  5. #5
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    --
    Ultima modifica di Ironmax; 27-10-2015 a 17:07

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Devi ridefinire il metodo toString() nella classe Persona:


    codice:
    public String toString() {
       // Deve ritornare una stringa che rappresenti lo stato interno dell'oggetto
       return cognome + " " + nome;   // mi sembra sufficiente :)
    }

    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

  7. #7
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Devi ridefinire il metodo toString() nella classe Persona:


    codice:
    public String toString() {
       // Deve ritornare una stringa che rappresenti lo stato interno dell'oggetto
       return cognome + " " + nome;   // mi sembra sufficiente :)
    }

    Ciao.
    Grazie funziona alla perfezione.
    Volevo capire perchè Iterator è un'interfaccia e non un oggetto come pensavo. Quindi è possibile che un'interfaccia prenda le stesse proprietà di una classe? Cioè funzioni come un oggetto?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Ironmax Visualizza il messaggio
    Volevo capire perchè Iterator è un'interfaccia e non un oggetto come pensavo. Quindi è possibile che un'interfaccia prenda le stesse proprietà di una classe? Cioè funzioni come un oggetto?
    Hai forse ancora le idee un po' confuse. Una interfaccia rappresenta una astrazione "pura", tutti i metodi elencati nella interfaccia sono abstract. Infatti una interfaccia serve per descrivere cosa deve fare un oggetto ma non come deve farlo. E tipicamente le interfacce si usano per definire un "contratto" che la implementazione della interfaccia deve (per forza) rispettare e su cui l'utilizzatore della interfaccia può contare.

    Il iterator() di Vector ti restituisce un oggetto, di una certa classe (non è nemmeno necessario sapere quale/dove è, tra l'altro è nascosta in Vector, non visibile dall'esterno) che sicuramente implementa Iterator. E questo è assolutamente sufficiente a te che vuoi solo sfruttare il principio della iterazione sulla collezione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Grazie andbin

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.