Avatar billede wtd_nielsen Nybegynder
04. december 2009 - 17:36 Der er 6 kommentarer og
1 løsning

generisk array, class cast exception

hej, jeg forsøger at oprette et array, som skal indeholde generiske objekter Entry<K,V>, til mit Map implementation.
Jeg får dog en class cast exception, når jeg forsøger på dette:

private Entry<K,V>[] tabel = (Entry<K,V>[]) new Object[N];

Jeg ved at det kan lade sig gøre, men det er bare lige at få syntaksen på plads, og den kan jeg ikke lige pt gennemskue, er der nogen der har et forslag?
Avatar billede arne_v Ekspert
04. december 2009 - 17:56 #1
Det er ikke umiddelbart muligt.

Men hvis du viser lidt kontekst, saa tror jeg at der er en loesning paa det problem du forsoeger at loese.
Avatar billede wtd_nielsen Nybegynder
04. december 2009 - 19:10 #2
hej arne.
Jeg fandt en løsning:
private Entry<K,V>[] tabel = (Entry<K, V>[]) Array.newInstance(Entry.class, n);
Avatar billede arne_v Ekspert
05. december 2009 - 01:42 #3
Og hvad gør den som:

        Entry<K,V>[] tabel = (Entry<K, V>[]) new Entry[n];

ikke gør?
Avatar billede wtd_nielsen Nybegynder
05. december 2009 - 12:10 #4
den giver ikke en class cast exception, programmet kan kører. Men hvad den tekniske forklaring er, ved jeg ikke.
Avatar billede arne_v Ekspert
05. december 2009 - 21:59 #5
Det gør den new i #3 vel også.
Avatar billede wtd_nielsen Nybegynder
05. december 2009 - 23:23 #6
hej arne, du har ret, det virker også, og det er nok den "korrekte" måde at gøre det på. Jeg ved ikke hvorfor jeg skrev Object i stedet for Entry til sidst:
private Entry<K,V>[] tabel = (Entry<K,V>[]) new Object[N];
i stedet for:
Entry<K,V>[] tabel = (Entry<K, V>[]) new Entry[n];
Avatar billede arne_v Ekspert
05. december 2009 - 23:49 #7
private Entry<K,V>[] tabel = (Entry<K,V>[]) new Object[n];

giver en class cast exception og det er der gode grunde til. Men normalt kan man arbejde sig udenom problemstillingen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester