|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2014
Messaggi: 16
|
[JAVA] classi e metodi generici
ciao a tutti.
è da molto che vi seguo e non ho mai scritto perché c'è sempre stato un thread che risolveva i miei dubbi, ma ora sto impazzendo. chiedo gentilmente il vostro aiuto. sto studiano i generici, tipi, classi e metodi. ho fatto un test, ma non mi funziona e non capisco perché. ecco il listato: Codice:
public class Prodotto {
private String marca;
private double costo;
public Prodotto(String marca, double costo){
this.marca=marca;
this.costo=costo;
}
@Override
public String toString(){
return marca+"-"+costo;
}
}
public class TV extends Prodotto{
private int pollici;
public TV(String marca, double costo, int pollici){
super(marca, costo);
this.pollici=pollici;
}
@Override
public String toString(){
return super.toString()+"-"+pollici;
}
}
public class Decoder extends Prodotto {
private boolean satellitare;
public Decoder(String marca, double costo, boolean satellitare){
super(marca, costo);
this.satellitare=satellitare;
}
@Override
public String toString(){
return super.toString()+"-"+satellitare;
}
}
public class Magazzino<P extends Prodotto> {
private LinkedList<P> magazzino;
public void aggiungi(P elemento){
magazzino.add(elemento);
}
public void rimuovi(int index){
magazzino.remove(index);
}
public LinkedList<P> getMagazzino(){
return magazzino;
}
}
la classe magazzino, gestisce il tipo generico P che è Prodotto o sua sottoclasse. se scrivo Codice:
LinkedList<Prodotto> m = new LinkedList<>();
m.add(new TV("samsung", 125.0, 32));
m.add(new Decoder("sky", 43.0, true));
m.add(new Decoder("telesystem", 12.0, false));
for (Iterator<Prodotto> iterator = m.iterator(); iterator.hasNext();) {
Prodotto next = iterator.next();
System.out.println(next);
}
se scrivo : Codice:
Magazzino<Prodotto> m = new Magazzino<>();
m.aggiungi(new TV("samsung", 125.0, 32));
m.aggiungi(new Decoder("sky", 43.0, true));
m.aggiungi(new Decoder("telesystem", 12.0, false));
for (Iterator iterator = m.getMagazzino().iterator(); iterator.hasNext();) {
Object next = iterator.next();
System.out.println(next);
}
m.aggiungi(new TV("samsung", 125.0, 32)); da errore di Exception in thread "main" java.lang.NullPointerException nella classe magazzino, l'istruzione che da errore è magazzino.add(elemento) del metodo Codice:
public void aggiungi(P elemento){
magazzino.add(elemento);
}
grazie in anticipo Marco. |
|
|
|
|
|
#2 |
|
Messaggi: n/a
|
sono ancora niubbo provo a sparare cosi imparo pure io
ma dove instanzi private LinkedList<P> magazzino; ??? |
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 60
|
sostituisci
private LinkedList<P> magazzino; con private LinkedList<P> magazzino = new LinkedList<>() è "magazzino" ad essere null, non "elemento" ciao |
|
|
|
|
|
#4 |
|
Messaggi: n/a
|
Tagan domandamia semplice. In questo caso istanziare,magazzino è.come creare una variabile di istanza giusto? Della classe Magazzino
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:06.



















