Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[Java] Quante complicazioni.

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[Java] Quante complicazioni.

Messaggioda KeyroEvolution » ven feb 15, 2008 4:02 pm

Salve a tutti voi programmatori!
Vi chiedo di riflettere su questi due problemi.

1)

Abbiamo ( in Java ovviamente ), l'esigenza di dichiarare un array (riferimento) che ha, come tipo di riferimento, T ( generico, per intenderci <T> ) ma come effettivamente allocato Object.
In teoria uno direbbe :

T a[] = new Object[n];

Invece non si puo`. Bensi` si deve optare per :

T a[] = (T[]) new Object[n]

Un cast insomma. Il problema e` che cosi` facendo il compilatore da un errore di Warning "innocuo". ( per cui tutto funziona, ma viene sempre questo errore )

Domanda 1: esiste una sintassi alternativa che non restituisca pero` un Warning in compilazione? Notate : non ho chiesto di sopprimere il warning, altrimenti uso -x lnt.

2)

Perche` quando dichiaro un array in Java con un tipo generico non e` necessario specificare <T> nel tipo effettivamente allocato?

ClasseGen<T> a = new G[n]

Dove ClasseGen e` una classe generica.
Spiegazione ovviamente chiara!

Grazie spero siano dubbi leggittimi. [rolleyes]
Avatar utente
KeyroEvolution
Senior Member
Senior Member
 
Messaggi: 311
Iscritto il: dom gen 20, 2008 3:12 pm
Località: Padova!

Messaggioda manu187 » ven feb 15, 2008 9:38 pm

io non ho capito molto bene quello che vuoi fare,magari spiegalo meglio
Avatar utente
manu187
Senior Member
Senior Member
 
Messaggi: 181
Iscritto il: dom ott 28, 2007 8:06 pm

Messaggioda KeyroEvolution » sab feb 16, 2008 2:33 pm

manu187 ha scritto:io non ho capito molto bene quello che vuoi fare,magari spiegalo meglio


Mmm. allora Abbiamo una classe con tipo generico T:

Codice: Seleziona tutto
public class CGen<T> {

//Righe di codice

}


Adesso, voglio testare questa classe con un array avente :

-Tipo di riferimento CGen.
-Tipo effettivamente allocato Object.

Ora, dal momento che il compilatore java facendo :

CGen<T> a[] = new Object[];

Da un errore, l'unica sintassi ( che ho trovato ) funzionante, e` :

CGen<T> a[] = (T[]) new Object[];

Pero` questo da un warning innocuo, che si puo` sopprimere con l'opzione -x lnt.

Esiste una sintassi alternativa per fare la stessa cosa che ho scritto sotto? (questa e` la prima domanda).
Avatar utente
KeyroEvolution
Senior Member
Senior Member
 
Messaggi: 311
Iscritto il: dom gen 20, 2008 3:12 pm
Località: Padova!

Messaggioda lulinotto » sab mar 15, 2008 10:19 am

...tu cerchi di fare un upcast da una classe sottotipo di Object...in java gli upcast sono sempre permessi strano che nn ti vada
prova con:
T []a;
e poi fai il cast (OBJECT)a quando la vai ad utilizzare...
Avatar utente
lulinotto
Aficionado
Aficionado
 
Messaggi: 98
Iscritto il: mar mar 11, 2008 10:19 am


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising