# Neue Klasse in eigenem Wizard erstellen



## Deeo (21. August 2007)

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


----------



## dto (21. August 2007)

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?


----------



## Deeo (21. August 2007)

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.


----------



## dto (21. August 2007)

Also deine Lösung heißt java Reflection, google es einfach mal da gibt es jede menge Beispiele.


----------



## Anime-Otaku (21. August 2007)

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?


----------



## dto (21. August 2007)

```
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:


```
class meine {
    private int i=10;
    
    public int getI(){
        return i;
    }    
}
```
 
Hier wird aus einem String eine Klasse erzeugt und dessen Methode ausgeführt !


----------



## dto (21. August 2007)

http://www.tutorials.de/forum/java/277836-string-als-methoden-oder-variablennamen-verwenden.html

Noch ein Link zum Thema


----------



## zerix (21. August 2007)

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


----------



## dto (21. August 2007)

Stimmt das hab ich wohl falsch verstanden!

Sorry

@zerix danke für den Hinweis


----------



## Deeo (21. August 2007)

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 ....


----------



## zerix (21. August 2007)

Ich hab mich leider mit RCP noch nicht soviel beschäftigt und weiß auch nicht was eclipse alles zur Verfügung stellt.
Nur mal zum Verständnis, du möchtest, dass der User einen Namen für eine Klasse eingibt und einen Klassennamen von der die neue Klasse erben soll. Das ganze soll dann als Java-Datei angelegt werden.

Falls ich damit recht haben sollte, wäre mein vorschlag, dass du einfach eine neue Datei erzeugst und dort alles reinschreibst was du brauchst, also von "Hand" sozusagen.

MFG

zEriX


----------

