|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
[java] strutture generiche
Treemap<Object,Object> è equivalente alla struttura Treemap senza l' utilizzo dei generici oppure se nella prima si tenta l' inserimento di una sottoclasse di Object si crea un errore?
|
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
In un TreeMap<Object,Object> puoi inserire chiavi e valori di qualunque sottotipo di Object (infatti ... sono comunque degli Object).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 22-06-2007 alle 11:10. |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
Quando vado a utilizzare poi gli elementi sono obbligato a fare il cast?Mi spiego: LinkedList<Object> lista=new LinkedLIst<Object>(); lista.addFirst(new MiaClasse()); MiaClasse mc=lista.removeFirst(); va bene oppure mi restituisce un tipo Object per cui devo fare MiaClasse mc=(MiaClasse)lista.removeFirst() |
|
![]() |
![]() |
![]() |
#4 | ||
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
import java.util.*; class Prova { public static void main (String[] args) { List list = new ArrayList (); list.add ("ciao"); } } Codice:
Prova.java:8: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.List list.add ("ciao"); ^ 1 warning Il compilatore sta solo avvertendo che l'utilizzo di un raw type è "unsafe", insicuro. Perché il compilatore non può più controllare (come invece potrebbe fare usando i generics) che la classe sia usata in modo type safe. Quote:
Codice:
List<String> list = new ArrayList<String> (); list.add ("ciao"); String s = list.get (0); // niente cast Se invece ci sono degli unchecked warning, allora non si può essere più sicuri. È possibile che ci siano dei problemi a tempo di esecuzione in altre parti di codice che magari non c'entrano nulla. Meglio fare un esempio: Codice:
import java.util.*; class Prova { public static void main (String[] args) { List<String> list = new ArrayList<String> (); list.add ("ciao"); List l = list; l.add (new Integer (123)); // Linea A String s = list.get (1); // Linea B } } Il problema sbuca alla linea B, che causa una eccezione ClassCastException.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
ho provato a compilare l' ultima classe da te postata e guarda che strano log esce:
Codice:
C:\Users\A\Documents\Prova11.java:7: type List does not take parameters List<String> list = new ArrayList<String> (); ^ C:\Users\A\Documents\Prova11.java:12: cannot find symbol symbol : method add(java.lang.Integer) location: class List l.add (new Integer (123)); // Linea A ^ .\List.java:4: unexpected type found : int required: reference LinkedList<int> lista=new LinkedList<int>(); ^ .\List.java:4: unexpected type found : int required: reference LinkedList<int> lista=new LinkedList<int>(); ^ 4 errors Procedura completata con codice di uscita 1 |
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
solitamente per i progetti utilizzo Jbuilder oppure eclipse,ma per fare una cosa veloce ho compilato con textpad..
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
javac -version
che dice?
__________________
|Java Base| |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il compilatore dice che il tuo List non accetta parametri. Significa che sa cosa sia un parametro quindi dev'essere 1.5+
Ci sono due "List" nelle API standard. L'interfaccia java.util.List, che è generica, e la classe java.awt.List, che non lo è. Prova ad usare il nome pienamente qualificato java.util.List.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
|
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Allora cerca il numero dell'esorcista sulle pagine gialle perchè il tuo PC è posseduto dal demonio
![]()
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
ho fatto diversi progetti,anche simulazioni web-service e non ha mai dato problemi sia con i generici che con le interfacce.
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Prova a stampare sulla console il tipo di quel "List":
System.out.println(List.class); subito prima della linea incriminata. Ho provato a compilare questa classe: Codice:
public class Main { private java.awt.List<String> lista = new java.util.ArrayList<String>(); } Codice:
Main.java:2: type java.awt.List does not take parameters private java.awt.List<String> lista = new java.util.ArrayList<String>(); java.util.List<String> e vedi cosa ti dice.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Un'improbabilità che m'è venuta in mente: per caso hai un'ide che crea anche applicazioni Java ME? Perchè usando come librerie "bootstrap" per il compilatore javac quelle di Java ME allora avremmo un java.util.List non generico.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
compilando con eclipse funziona tutto ok.
Un' altra domanda però non riesco ad eseguire da riga di comando il -Xlin per verificare i warning. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:00.