String variabel til kald af classConstructor?

Tags:    java

Jeg har en FileMenu med et ukendt(varierende) antal xmlFile navne og vil gerne benytte denne string værdi til at kalde en klasse, men hvordan for jeg fortalt at denne String værdi + substring, skal opfattes som et klasse navn?
SuperString = selectedItem+substring;
Class SuperString = new SuperString();
dur ikke for compiler bliver ved med at opfatte det som String.
Class.forName(SuperString, true, classloader.colerClassLoader());
giver NullPointerException.
ideer modtages!

Nils G H Waale
java.jar.jar.jar



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Jeg har fundet to links til dig, der viser hvordan du loader en klasse:

http://javaalmanac.com/egs/java.lang/ReloadClass.html?l=rel
http://javaalmanac.com/egs/java.lang/LoadClass.html?l=rel

MvH

Stefan Svensson
http://fusket.1go.dk



Jeg har fundet to links til dig, der viser hvordan du loader en klasse:
Stefan Svensson
http://fusket.1go.dk


Tak for links'ne.
Det satte en masse tanker igang: Kan jeg lave flere classer med samme navn, hvis de er i forskellige packages, var den første tanke, men droppet er hensat til en anden gang - jeg skal lige prøve det med at tilføje extention +'.class' til myString.
Virker edt vender jeg tilbage og udløser points'ne

Jeg har:
package srcListpr, med to xmlFiles med henholdsvis dtdList og xmlList(attrib dtd) og unmarshall-mashallClasses og GuiClass
package bookListEditor, med unmarshall-mashallClasses og mulighed for at crearer n'de xmlFiles og redigere disse, svarende til en dtd på listen.
package articleListEditor, som ovenstående.
package webSrcListEditor, ditto.

Editorerne i editor packages er grunlæggende ens, får deres særpræ 'on the run', og arver fra samme superEditor, som findes i package srcListpr.
Da project'et er tænk til at til stadighed at tilføje ny dedikerede edirorer i nye packages, ved jeg alså ikke className på forhånd, men skal konstuere navnet ud fra ny dtd.
Ind til videre bruger jeg simpel dtd'er, men det er jo bare et spørgsmål om at lave komplekse metoder til at bygge ny editor 'on the run'-

jeg har desværre ikke fast IP adresse(står på venteliste) og kan derfor ikke bruge cvs, men jeg kan godt zibbe noget kode og sende det, hvis nogen skulle være interesseret.
Nils G H Waale
java.jar.jar.jar



Jeg har en FileMenu med et ukendt(varierende) antal xmlFile navne og vil gerne benytte denne string værdi til at kalde en klasse, men hvordan for jeg fortalt at denne String værdi + substring, skal opfattes som et klasse navn?
SuperString = selectedItem+substring;
Class SuperString = new SuperString();
dur ikke for compiler bliver ved med at opfatte det som String.
Class.forName(SuperString, true, classloader.colerClassLoader());
giver NullPointerException.
ideer modtages!

Nils G H Waale
java.jar.jar.jar


Det lyder til at det du har brug for er Javas reflektion.

Se evt. her : http://www.daimi.au.dk/dDist/teknik/reflektion.html

og se på java.lang.reflect under java apien :

http://www.daimi.au.dk/dIntProg/java/docs/api/index.html

Så vidt jeg husker skal du have et interface liggende for hver klasse du ønsker at genererer dynamisk.

Hvis du ikke kan få det til at virke, skal jeg gerne skrive et udførligt eksempel!

Mvh.,

Jakob Justsen



følgende link var'adgang forbudt'!
<<http://www.daimi.au.dk/dIntProg/java/docs/api/index.html >>

<<Så vidt jeg husker skal du have et interface liggende for hver klasse du ønsker at genererer dynamisk.>>
Rent faktisk er det et inderface jeg har forsøgt at kalde med class.forName som retunerer classNotFoundExc, så måske skulle jeg prøve at kalde med +"Impl".
jeg kalde interfacet fordi her ligger metadata som: public static final String[] ZEUS_ELEMENTS,
men nu har jeg været inde på sun's sider( via daimi ) og læst, at fields som oven stående, defineret i interface, kan nås fra/gennem implementerings klassen, som meget belejligende hedder det samme som interfacet, blot med tilføgelse af Impl.
Men nu vil jeg på sommerferie. Jeg vender tilbage i starten af august og tager tråden op.
Tak for hjælpen Jakob

Nils G H Waale



[Redigeret d. 29/06-03 22:27:47 af Nils G H Waale]

[Redigeret d. 29/06-03 22:29:25 af Nils G H Waale]



t