Klassenaufruf mit parametern/reflection

MScalli

Erfahrenes Mitglied
hi leutz.
wie kann ich mittels reflection eine klasse aufrufen deren construktor so aussieht.

Klasse(String, JDesktopPane, int, int);

erklärung:
ich habe den Klassennamen nur als String und muss diese praktisch so erzeugen

new Klasse("Titel", desktop, 100, 100);

aufruf einer Klasse ohne Paramter ist kein Prob.
habe es in so probiert aber das haut nicht hin.

Code:
try {
Class c = Class.forName(str_klassenname);
	
Object[] args = new Object[] {klassenname, Auftrag.desktop, width_frame, height_frame};
Class[] ArgsClass = new Class[] {String.class, JDesktopPane.class, int.class, int.class};
Constructor constructor = c.getConstructor( ArgsClass);
object = constructor.newInstance(args);
			
			
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		}
 
Hallo,

welche Exception (genauer Text!) wird den geworfen?
Java:
System.out.println(Class.forName("de.tutorials.Clazz").getConstructor(
                String.class, JDesktopPane.class, int.class, int.class)
                .newInstance(null, null, 0, 0))

Funktioniert ohne Probleme mit:
Java:
package de.tutorials;
import javax.swing.JDesktopPane;
public class Clazz {
    public Clazz(String a, JDesktopPane b, int c, int d){
    }
}

Gruß Tom
 
diese Exception bekomme ich

java.lang.NoSuchMethodException: package.M0100.<init>(java.lang.String, javax.swing.JDesktopPane, int, int)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at FerixClient.TreePanel.callClass(TreePanel.java:263)
at FerixClient.TreePanel.callCobolWindow(TreePanel.java:218)
at FerixClient.TreePanel$1.valueChanged(TreePanel.java:181)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(Unknown Source)
at javax.swing.JTree.setSelectionPath(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
 
Zuletzt bearbeitet:
Die Exception sagt aus, dass ein solcher Konstruktor nicht existiert.

Bist du sicher, dass die Klasse "M0100" diesen Konstruktor hat?

MFG

Sascha
 
o mann.
Ich seh da irgendwie nie was raus aus den Exceptions!!
aber auf den link von sascha schirra hab ich mir den Konstruktor nochmal angeschaut...

Alles hat gepasst bis auf......
mein desktop ist ein Container...

public M0100(String title, Container _desktop, int _x, int _y)

also Container.class dann klappts auch mit dem nachbarn ;)

vielel dank für eure hilfe
 
Zurück