[Java] tipi generici con esempio pratico

Discussione in 'Java' iniziata da tagan, 15 Ottobre 2019.

  1. tagan

    tagan Nuovo Utente

    Registrato:
    15 Ottobre 2019
    Messaggi:
    3
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Ciao.
    mi sto imbattendo nei tipi generici, ma mi sfugge il loro utilizzo, quando provo a creare un programmino java va sempre in errore in compilazione.
    Chi è cosi gentile da aiutarmi con un esempio pratico? in particolare, vorrei creare un inventario di oggetti diversi.
    Per didattica ho creato una classe astratta Prodotto con un solo parametro marca
    poi classi Monitor, Stampante e Notebook che estendono Prodotto.
    Alla fine vorrei creare una List<?> di ArrayList() e includere i tre oggetti diversi.

    Mi sfugge come parametrizzare le classi, come accedere ai loro attributi e come stampare il contenuto dell'inventario.
    Non riesco neanche ad aggiungere gli oggetti.

    Questo quello che ho fatto
    Codice:
    public abstract class Prodotto {
        private String marca;
        public String getMarca() {
            return marca;
        }
        public void setMarca(String marca) {
            this.marca = marca;
        }
    }
    
    public class Monitor extends Prodotto {
        private String tipo; //LCD o LED
        private int dimensioniPollici;
        public String getTipo() {
            return tipo;
        }
        public void setTipo(String tipo) {
            this.tipo = tipo;
        }
        public int getDimensioniPollici() {
            return dimensioniPollici;
        }
        public void setDimensioniPollici(int dimensioniPollici) {
            this.dimensioniPollici = dimensioniPollici;
        }   
    }
    
    public class Notebook extends Prodotto {
        private int ram; //GByte
        private String cpu;
        public int getRam() {
            return ram;
        }
        public void setRam(int ram) {
            this.ram = ram;
        }
        public String getCpu() {
            return cpu;
        }
        public void setCpu(String cpu) {
            this.cpu = cpu;
        }
    }
    
    public class Stampante extends Prodotto {
        private String tipo; //Laser, InkJet
        public String getTipo() {
            return tipo;
        }
        public void setTipo(String tipo) {
            this.tipo = tipo;
        }
    }
    
    
    import java.util.ArrayList;
    public class Inventario {
        Monitor m = new Monitor();
        Stampante s = new Stampante();
        Notebook n = new Notebook();
       
        List<?> l = new ArrayList<>(); // NON FUNZIONA !!!!!
       
        ArrayList<Monitor> list1 = new ArrayList<>(); //OK
        ArrayList<Stampante> list2 = new ArrayList<>(); //OK
        ArrayList<Notebook> list3 = new ArrayList<>(); //OK
        ArrayList<?> list4 = new ArrayList<>(); //OK
       
        public void aggiungiOggetto() {
            list1.add(m);  //OK
            list2.add(s);  //OK
            list3.add(n);  //OK
    
            list4.add(s); //The method add(capture#1-of ?) in the type ArrayList<capture#1-of ?> is not applicable for the arguments (Stampante)
        }
    }
    
    Non capisco perché List<?> l = new ArrayList<>() non funziona, restituisce
    List cannot be resolved to a type
    Cannot infer type arguments for ArrayList<>

    e comunque non riesco ad aggiungere oggetti diversi alla lista. Dovrei parametrizzare anche le classi?
    Mi serve un esempio pratico per capire, il libro spiega in via teorica senza esempi e solo con list<String>.

    Grazie mille
    tagan
     
  2. tagan

    tagan Nuovo Utente

    Registrato:
    15 Ottobre 2019
    Messaggi:
    3
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Ho risolto tutto.
    Grazie comunque.
    Tagan
     
Sto caricando...

Condividi questa Pagina