Klasse aufrufen mittels Pfad

Madlip

Mitglied
Hallo community,

ich steh hier vor einen Problem.

Ich habe eine Webanwendung, in dieser hab ich zwei DropDownBoxen.

In der ersten ist das Produkt und in der zweiten sind die Seiten dazu. Hab das mittels einer Hashmap gefüllt und so weiter ...

in der Hashmap hab ich eine Arraylist, in dieser ist der Pfad enthalten.

Der Pfad besteht aus den "Pagesnamen" + "Klassennamen"

Über eine If Anweisund/Abfrage hol ich mir den korrekten Pfad. Nun will ich wenn ich das korrekte Ergebnis habe das diese Klasse aufgerufen wird.

Ein Kollege meinte das ich das mittels der "newInstance" Methode machen kann nur ist mir diese Methode nicht bekannt bzw. weiß ich nicht wie sie funktioniert. Wenn ihr mir ein paar Tipps und Anregungen geben könntet wäre ich euch sehr dankbar****** :)

vielleicht zur Syntax:

public void onSubmit() {
ArrayList<ProductOptions> selectedPages = bwmm.getProductOptions().get(selectedProduct);

for (int i = 0; i < selectedPages.size(); i++){
if (selectedPages.get(i).getName().equals(selectedPage)){
}

also die ProductOptions ist eine von mir angelegte Klasse in der ich eine Struktur festgelegt habe (String Name, Class Page).

selectedProduct ist das Produkt welches gerade ausgewählt ist

und selectedPage ist die Seite die ich ausgewählt habe ... durch diesen parameter hol ich mir den Pfad. Und dann müsste halt der Aufruf kommen ... nur wie************:(

mfg Mad
 

Matt297

Erfahrenes Mitglied
Die "newInstance"-Methode ist eine Methode der Klasse Class. Mit der statischen Methode "Class.forName(String)" kannst du dir das Klassenobjekt für deine Klasse holen. Auf dieses Klassenobjekt kannst du dann die newInstance-Methode ausführen und erzeugst damit ein Objekt diese Klasse.
Dieser grob erklärte Vorgang ist Teil der Reflections(java.lang.reflect). Mithilfe der Reflections kann man auf die in Java verfügbaren Metadaten zugreifen, also zum Beispiel eine Liste aller Attribute oder Methoden oder auch Annotations einer Klasse.
Zum genaueren nachlesen kannst du in der Java-Insel nachschauen.

Gruß
Matt
 

Madlip

Mitglied
Hey, vielen Dank für die schnelle Antwort.

Wenn ihr eine syntax hättet wäre es ganz cool.

Ich bin wie folgt vorgegangen.

Class myClass = myClass.newInstance(selectedPage);

dann will er aber noch ein Konstruktor Objekt haben ... und da hab ich dann meine Probleme bzw. weiß ich nicht ob die oben stehende Methode so Syntaktisch richtig ist.
 

Matt297

Erfahrenes Mitglied
Die korrekte Syntax wäre in etwa so:

Java:
Class<?> myClass = Class.forName(selectedPage);
Object myObject = myClass.newInstance();

Damit hast du dann ein reguläres Objekt. Um das weiterzuverwenden muss es natürlich entsprechendend gecastet werden.

Gruß
Matt
 

Madlip

Mitglied
ah ok jetzt versteh ich, durch diese Zeile:

Code:
Class<?> myClass = Class.forName(selectedPage);

mach ich mir eine Referenz zu der Klasse, also erstell mir ein Objekt von der Klasse.

und durch diese Zeile:

Code:
Object myObject = myClass.newInstance();

instanzier ich mir die Klasse und diese ruft dann den "default" Construktor auf?

Bitte verbesser mich wenn ich da jetzt noch etwas falsch verstehe.
 

Matt297

Erfahrenes Mitglied
Das hast du so richtig erkannt. Habe ich schon versucht in meinem ersten Post zu erklären ;)
Mit diesem Objekt kannst du dann theoretisch ganz normal weiterarbeiten.