Avatar billede martinhrj Nybegynder
08. august 2005 - 11:42 Der er 1 kommentar og
1 løsning

Dynamisk generics

Tja, jeg kunne ikke lige finde på et smart navn til titlen :)

Jeg har gået og tænkt lidt over følgende.

Hvis man har en vector people<Person> (indeholdende Person-objecter). Person er generisk så man burde initialicere Person med Person<en eller anden type>.

Så prøver jeg lige at lave et gennemløb af vectoren:

for(Person p : people){
  p.getName();
}

Nu burde man jo få en warning, fordi Person ikke er initialiceret korrekt. Selvom man ikke bruger det generiske i Person. Burde man her have initialiceret people<Person> således i stedet? People<Person<some_type>>? Men hvad så hvis det er forskellige typer mine person objecter skal initialiceres med?

Jeg prøver at gå et skridt videre.

for(Person p : people){
  ?? job = p.getJob(); //antag at getJob returnerer et job af generisk type
}

Hvad er så den korrekte måde at klare ovenstående på?

Og nu et skridt videre, for at komme til mit egentlige spørgsmål. Så lad os sige, at jeg nu skal have beskrevet jobbet i en JobDescriptor<T> (begynder det at blive et søgt eksempel? ;) )

JobDescriptor<bestemt_type> jd = new JobDescriptor<bestemt_type>();
Denne bestemte type skal jo så naturligvis være samme type, som getJob i Person returnerer. Jeg har været inde på lidt reflection, men jeg kan simpelthen ikke få ind i min knold, hvordan jeg dynamisk skal komme frem til "bestemt_type" (deraf titlen).

Det var en masse spørgsmål uden ret mange spørgsmålstegn :-) Håber der er nogen der forstår min undren, og kan komme med nogle lækre svar *s*.

På forhånd tak!
Avatar billede martinhrj Nybegynder
08. august 2005 - 11:44 #1
For at kommentere lidt mere på hvad jeg nævnte om reflection, så kan jeg jo finde et field, og få fat i getType af denne. Men det returnerer en Class<?>, som jeg IKKE kan putte ind i mellem <>, når jeg skal oprette nye typer
Avatar billede martinhrj Nybegynder
28. november 2005 - 09:55 #2
Lukker
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