[Java] tipi generici con esempio pratico

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
Autore Titolo Forum Risposte Data
A [Cerchiamo] [Retribuito/a] "Java Solution Architect" Offerte e Richieste di Lavoro e/o Collaborazione 1
F Script java elenco alfabetico non funziona Javascript 3
C Serializzazione in java Java 1
M AIUTO ESERCIZIO JAVA Javascript 1
M Ripasso Java Offerte e Richieste di Lavoro e/o Collaborazione 0
F [OFFRO - RETRIBUITO] Sviluppatori JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
L leggere RGB di un pixel dello schermo in java Java 1
I Creazione programmino JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
F Aiuto java script Javascript 2
J File audio in java Java 0
V [JAVA] come integrare un software scritto in java su una pagina web? Java 4
C Java client / server Java 0
F [OFFRO][RETRIBUITO] PROGRAMMATORE JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
C [Java] testare un metodo con Junit Java 1
A [Java] caricare un url esterno senza utilizzo di iframe Java 0
S [OFFRO] Debug delle tue applicazioni Java Offerte e Richieste di Lavoro e/o Collaborazione 1
L [Java] Aggiungere elementi ad array JSON Java 0
B [Java] Paginazione in risposta HTTP Java 0
A [Java]Date diminuite di un giorno su db MySQL Java 0
K [Java] aiuto switch case Java 1
P [Java] limite destro di un JFrame Java 5
D [Java] far partire JProgressBar all'apertura di un JFrame Java 1
N [java con eclipse]metodo ricorsivo che accetta in ingresso un char e restituisce un int Java 0
A Verifica validità data in Java Java 2
L [Java] Errore json conversione Java 0
Drago73 [Java] leggere/scrivere txt server Java 0
M [Javascript] Java card Java 0
serena.cerutti posizioni aperte: PhP, Java, .Net Offerte e Richieste di Lavoro e/o Collaborazione 0
N [Java]problema jasper report dopo compilazione file .jar Java 0
N [Java] Piccolo jform per calcolo totale da 2 campi i double Java 0
N [Java] jbutton con funzioni Java 2
M [java] esercizio lunghezza array di stringhe Java 0
A [java] problema esercizio Java 0
filograndipad2 Esempi chiari e completi sul funzionamento degli eventi in Java Java 1
Raziel84 [Java] Combinazione elementi matrice Java 0
A [java] problema esercizio array Java 5
L da php a popup java PHP 2
W Piccolo sistema per gestire alcune periferiche, Java o altro linguaggio? Java 8
S Cerco programmatore java Offerte e Richieste di Lavoro e/o Collaborazione 0
Z [Java] Grassetto assente su font incorporato nel pacchetto jar Java 0
O [Java] Lettura da JSON File Java 0
Z [Java] Caratteri distorti e spaziature errate nelle stampe di componenti swing Java 0
W Aiutino per compilare o eseguire un App Java Java 0
S [JAVA] Geocoding Java Java 0
Andy56 Parametri funzioni in Java Java 0
B [Java] Stringhe binarie Java 0
S cerco persona che conosca java, per " progetto " di software Offerte e Richieste di Lavoro e/o Collaborazione 0
A Java RMI Java 0
T Socket in Java con Gui Java 2
Sevenjeak [Java EE] Problema JUnit e alcuni chiarimenti su jee Java 0

Discussioni simili