/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
ClassCastException
Fra : Emerik Schultz-Peter~


Dato : 24-06-04 15:43

Hej
jeg har et problem med en ClassCastException.

Jeg har noget kode der hedder:

Hashtable vaegtIPDB = (Hashtable) Collections.synchronizedMap(new
Hashtable());

Det kompilerer uden fejl, men når jeg prøver at køre den kode som står der,
så kaster den som sagt en ClassCastException lige præcis på den linie kode.

Hvad skyldes det? Hvad kan jeg gøre ved det?

MVH Emerik



 
 
Emerik Schultz-Peter~ (24-06-2004)
Kommentar
Fra : Emerik Schultz-Peter~


Dato : 24-06-04 16:08

Hej igen,
Jeg fandt ud af det ( i hvert fald måden at løse det på).

Hvis man i stedet for at skrive:
Hashtable vaegtIPDB = (Hashtable) Collections.synchronizedMap(new
Hashtable());

Skriver:
Hashtable vaegtIPDB = new Hashtable (Collections.synchronizedMap(new
Hashtable()));

så er der kein Problem, zero problemos, jubii!

Tak for hjælpen, hvis nogle ikke når at opdage svaret, før de selv fik
svaret.

MVH Emerik


"Emerik Schultz-Petersen" <emerik@emerik.dk> wrote in message
news:cbep9t$1dj3$1@news.cybercity.dk...
> Hej
> jeg har et problem med en ClassCastException.
>
> Jeg har noget kode der hedder:
>
> Hashtable vaegtIPDB = (Hashtable) Collections.synchronizedMap(new
> Hashtable());
>
> Det kompilerer uden fejl, men når jeg prøver at køre den kode som står
der,
> så kaster den som sagt en ClassCastException lige præcis på den linie
kode.
>
> Hvad skyldes det? Hvad kan jeg gøre ved det?
>
> MVH Emerik
>
>



Lasse Reichstein Nie~ (24-06-2004)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 24-06-04 17:09

"Emerik Schultz-Petersen" <emerik@emerik.dk> writes:

> Jeg fandt ud af det ( i hvert fald måden at løse det på).

Tjah. Din løsning virker, men ikke af den grund du tror.

> Hvis man i stedet for at skrive:
> Hashtable vaegtIPDB = (Hashtable) Collections.synchronizedMap(new
> Hashtable());

Problemet her er :
1) Hashtable er allerede synkroniseret, så det er overflødigt at bruge
Collections.synchronizedMap.
2) Collections.synchronizedMap returnerer ikke en Hashtable, bare
et Map (sin helt egen implementation af interfacet Map).
2) Hvis du brugte HashMap i stedet (hvilket jeg vil anbefale), så
ville Collections.synchronizedMap stadig ikke returnere et HashMap.

Så, prøv:

Map vaegtIPDB = Collections.synchronizedMap(new HashMap());

> Skriver:
> Hashtable vaegtIPDB = new Hashtable (Collections.synchronizedMap(new
> Hashtable()));
>
> så er der kein Problem, zero problemos, jubii!

Det er fordi det er fuldstændig det samme som
Hashtable vaegtIPDB = new Hashtable();

Når du konstruerer en Hashtable med et Map som argument, så piller den
alle elementerne ud af argument-Mappet og putter dem ind i Hashtable'en.
Argument-Mappet er tomt, så det er hurtigt overstået.

Men som sagt er Hashtable synkroniseret, så det virker alligevel.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408180
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste