Neue Klasse in eigenem Wizard erstellen

Deeo

Grünschnabel
Hallo zusammen,

gleich vorneweg, ich bin noch relativ unbeholfen und neu in Java, aber ich lerne recht schnell und bemühe mich immer soviel es geht selber auf die Reihe zu bekommen.
Ich arbeite mit eclipse 3.2
Zu meinem Problem:

Ich habe ein JDT-Plugin geschrieben, mit welchem man einen sogenannten usecase über einen Wizard anlegt. auf der ersten seite werden der name des Usecases, der sourceFolder und das Package eingegben, anschließend werden die benötigten Packages und ein textfile angelegt. Das funktioniert soweit auch super.

Jetzt soll der Wizard erweitert werden, dass auf der nächsten Seite optional 2 Klassen angelegt werden. Der User gibt hierzu einen Namen, eine Basisklasse und ein Interface an.

Die Daten liegen mir quasi im Programm als string vor und ich könnte damit weiterarbeiten. leider weiß ich genau an der stelle nicht weiter.

Ich hab schon in den newClassWizard geschaut, aber leider finde ich da nichts brauchbares.

hier noch der Link zu den Wizards:
http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_api_wizards.htm

hatte überlegt, dass der NewClassWizard vermutlich hiermit arbeitet (createType):
http://help.eclipse.org/help32/topi...pe(org.eclipse.core.runtime.IProgressMonitor) bin aber nicht sicher.

Hoffe mir kann jemand helfen.

Grüße und vielen Dank im voraus

Deeo
 
Du hast also eine Objecttyp (Klasse) und einen String und nun möchtest du aus dem String(Name der Klasse) eine Instanz dieser Klasse erzeugen?

Habe ich das richtig verstanden?
 
hmm, also ich hab den String der den Namen der Klasse enthält und will halt ein [Name der Klasse].class file erzeugen. Also quasi die Klasse an sich, die widerum von der vorgegeben Basisklasse erbt. Der Wizard soll quasi das gleiche machen, wie der Wizard, wenn ich eine Neue Klasse anlege.
 
Also deine Lösung heißt java Reflection, google es einfach mal da gibt es jede menge Beispiele.
 
So wie ich es verstanden habe, will er den Standard Wizard zum Erstellen einer neuen Klasse in eclipse erweitern und diesen von seinem Plugin/"Programm" aus aufrufen?
 
Java:
public test() {
        try {
            Class c= Class.forName("meine");                        //Klasse meine
            
            Object ob=c.newInstance();                              //neue Instanz der Klasse
            
            java.lang.reflect.Method[] m=c.getMethods();            //holen aller Methoden
            
            System.out.println((m[0].getReturnType().toString()));  //holen des Rückgabetyps der Metode                          
            
            System.out.println(m[0].invoke(ob, new Object [] {}));  //methode ausführen            
            
        } catch (Exception e) {
            e.printStackTrace();
        }                        
    }

das Object:

Java:
class meine {
    private int i=10;
    
    public int getI(){
        return i;
    }    
}

Hier wird aus einem String eine Klasse erzeugt und dessen Methode ausgeführt !
 
Hallo,

@dontschew
ich glaube du hast das falsch verstanden. Du erzeugst da keine Klasse, sondern ein Object von einer existierenden Klasse. Wenn ich aber deeo richtig verstanden habe, möchte er eine komplett neue Klasse erzeugen, also eine Klasse die noch nicht existiert.

MFG

zEriX
 
Stimmt das hab ich wohl falsch verstanden!

Sorry

@zerix danke für den Hinweis
 
Zuletzt bearbeitet von einem Moderator:
ich hab mich da jetzt total eingelesen und wollte auch gerade fragen, wie ich damit eine neue Klasse anlegen kann. Tut mir echt leid, dass hier soviele missverständnisse aufkommen, dachte das wäre klar genug *shame on me* ^^

also der wizard existiert schon (selbst geschrieben als Plugin) und der soll eine neue Klasse anlegen deren Name und Basisklasse vom Benutzer eingetragen wird.
(anstatt dass der benutzer nach meinem Wizard per hand den New Class-Wizard aufruft, trägt er nur kurz Name und Basisklasse ein und die Klasse wird dann von meinem Wizard gleich mit angelegt)
Hoffe, dass es jetzt klar genug rübergekommen ist, sorry nochmal ....
 
Zurück