[Java] tipi generici con esempio pratico

  • Creatore Discussione Creatore Discussione tagan
  • Data di inizio Data di inizio

tagan

Nuovo Utente
15 Ott 2019
3
0
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
 

Discussioni simili