webForumDet fria alternativet

Instansiera klasser, utifrån filnamnen på servern

Java

4 svar · 385 visningar · startad av andreascarlsson

Medlem sedan feb. 2003202 inlägg
Frågan#1

Jag undrar om det finns något sätt att skapa och instansiera objekt, utifrån klasser som finns i en viss mapp på webbservern??

Jag har alltså ett antal klasser i en mapp och vill göra något i den här stilen:

Pseudokod:

Skapa en Vector v;
Skapa en String-array sa;

Hämta en lista över befintliga klassnamn i mappen och spara  i sa;

Loopa igenom innehållet i Stringarrayen sa
   Skapa ett objekt utifrån klassnamnet som finns i sa[index] och lägg in detta i v;

Hoppas att ni förstod pseudokoden... :r

Anledningen till att jag vill göra detta, är att jag har ett stort antal klasser som skall instansieras och läggas in i en Vector. Jag skulle förvisso kunna deklarera och skapa varje klass i koden, men det kommer isådanafall att bli en stor .javafil. Sedan tycker jag att detta skulle bli en snyggare och mer dynamisk lösning. Om jag i framtiden skulle lägga till ytterligare en klass i mappen på servern, så slipper jag även kompilera om javafilen.

Går detta att lösa?? :q

Medlem sedan maj 20012 237 inlägg
#2

String klassnamn = "Test";

Class c = Class.forName(klassNamn);

Objekt o = c.newInstance(); // måste typkonverteras till rätt form

Med dessa två rader kan du skapa och initiera en klass dynamiskt genom att bara veta dess namn.

Sen hur du typkonverterar (Object) o till rätt typ vet jag inte.

Medlem sedan feb. 2003202 inlägg
#3

Tack för hjälpen!! :)

Nu gäller det bara att klura ut ett bra sätt att hantera typkonverteringen... Känner på mig att det kan bli lite krångligare!

Medlem sedan maj 20012 237 inlägg
#4

Vad är det för filer som du tänker droppa i katalogen?

Har alla de filer nånting gemensamt?

Ifall de har så kan du ju för att underlätta typ-konverteringen, skapa antingen ett interface med fördfinierade metoder eller en klass som alla de andra klasser ärver från. Då kan du alltid typkonvertera till antingen interfacet eller bas-klassen, beroende på vilket du valde.

Medlem sedan feb. 2003202 inlägg
#5

Ja, jag håller på att titta på en sådan lösning nu. Det blir lite jobb, men det känns som ett bra alternativ!

Tack för hjälpen! :bire

487 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
345 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)