|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Roma
Messaggi: 4205
|
[java] source level error
sto cercando di fare una classe parametrizzata rispetto a un tipo, quinci class classe<tipo>{...}
ma quando provo a compilare ottengo questo errore: Syntax error, type parameters are only available if source level is 5.0 compilo da linea di comando su linux, niente ide e cose varie. l'output di java -version è questo: java version "1.6.0" Java(TM) SE Runtime Environment (build 1.6.0-b105) Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing) e ho appena ricompilato e installato jre.... dove sbaglio?? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
e javac -version?
__________________
|Java Base| |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Roma
Messaggi: 4205
|
Eclipse Java Compiler v_686_R32x, 3.2.2 release, Copyright IBM Corp 2000, 2006. All rights reserved.
c'entra qualcosa con il fatto che avevo messo eclipse? cioè cerca di usare il compilatore di eclipse? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Sì, usa quello.
O installi un jdk della sun o imposti -source 1.5 (credo)
__________________
|Java Base| |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Mar 2002
Città: Roma
Messaggi: 4205
|
Quote:
e se provo a fare javac -version mi dice javac: invalid flag: -version Usage: javac <options> <source files> dove sbaglio? |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Infatti i tipi parametrici ci sono dalla versione 5,
prova con il compilatore di eclipse con opzione -source 1.5
__________________
|Java Base| |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Mar 2002
Città: Roma
Messaggi: 4205
|
Quote:
non c'è un modo per impostarlo di default senza doverlo rimettere a ogni compilazione? per il resto... mi da un sacco di warning quando cerco di usare cast da object a TIPO (dove tipo è parametrizzato) roba del tipo: Type safety: The cast from Object to TIPO is actually checking against the erased type Object oppure Type safety: The method nome_funzione(Object) belongs to the raw type Classe. References to generic type Classe<TIPO> should be parameterized ovviamente i cast ecc sono tutti safe perche so quello che fanno, ma non c'è un modo per tranquillizzare il compilatore e evitarmi 12 warning di questo tipo a ogni compilazione? |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
nome_funzione(Object) -> nome_funzione(Classe<TIPO>) e dentro non devi neanche più castare. |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Mar 2002
Città: Roma
Messaggi: 4205
|
Quote:
vi metto qualche frammento di codice che stò usando... questa funzione: public void insert(T x){ if(!els.contains(x)) els.addElement(x);} dove els è un vector di T e T è il parametrizzato, la insert se non è presente l'elemento lo aggiunge alla fine. nel main dichiaro un nuovo contenitore di oggetti: GSet naturali = new GSet<Integer>(); quindi ora T dovrebbe essere un Integer... poi chiamo la funzione così: naturali.insert(new Integer(123)); cos'è che non ho capito? |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Lascia... non avevo capito bene io!
Guarda io uso NetBeans e non Eclipse, e quel warning è prodotto dal compilatore di Eclipse... Ho trovato questo che spiega il significato del messaggio: --> Type Safety: erased type Ultima modifica di banryu79 : 03-12-2007 alle 09:40. |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
prova a dichiarare GSet<Integer> naturali...
Quote:
__________________
|Java Base| |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:21.










| 
|








