Avatar billede kernelx Juniormester
04. maj 2009 - 10:46 Der er 3 kommentarer og
2 løsninger

Class og List<?>

Hi,

+++
Object list1 = new ArrayList<String>();
Object list2 = new ArrayList<Integer>();

Class<?> listClass1 = list1.getClass();
String listClass1Name = listClass1.getCanonicalName();

+++

Jeg vil gerne finde ud af, om list1 er en ArrayList<String> eller ArrayList<Integer>. Mit mål er, at jeg gerne vil cast'e tilbage.

if ( ArrayListType.equals( "java.lang.String" ) ) {
  List<String> l = (List<String>)list1;
}
else if ( ArrayListType.equals( "java.lang.Integer" ) ) {
  List<integer> l = (List<Integer>)list1;
}

med venlig hilsen
KernelX
Avatar billede arne_v Ekspert
04. maj 2009 - 13:30 #1
Generics i Java er en compile time thingy. Runtime er alt bare Object. Det hedder type erasure.

Så i.s.f. list1.getClass() skal du bruge list1.get(0).getClass() !

Forudsætter at der er mindst et element i listen.

Og så lyder det som om du er på vej ud i noget snavns !!
Avatar billede mcb2001 Nybegynder
04. maj 2009 - 14:20 #2
jeg giver arne ret - det ligner snavs :-)

Prøv eventuelt at beskrive din problemstilling, der leder op til en så kringlet løsning, for der er garanteret en mere elegant løsning :-)
Avatar billede kernelx Juniormester
11. juni 2009 - 11:49 #3
ok, i har vundet ... det er noget snavs :-)

husk at skrive et eller andet som svar.
hvis begge gi'r et svar, får begge 50 points.

mange tak!
Avatar billede mcb2001 Nybegynder
11. juni 2009 - 12:19 #4
her
Avatar billede arne_v Ekspert
11. juni 2009 - 14:52 #5
svar
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
Kategori
Kurser inden for grundlæggende programmering

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