reflection mit parametern

Status
Nicht offen für weitere Antworten.

MScalli

Bekanntes Mitglied
hi leutz
Ich muss ne Klasse mit verschiedenen Parametern aufrufen.
Leider muss ich die Klassen mittels nem String aufrufen.
Ansich nicht so wild, aber mit den Parametern bekomm ich das nicht so hin.

das sind JInternalFrames und ich brauch leider auch die 2 aufrufe getFrameWith() und getFrameHeight()

alles geht, bis auf den letzten aufruf.. d.h. der eigentliche aufruf der Klasse MIT den Parametern
Soviel ich weiss müssen dort hin wo new Object[] steht.. aber leider ist das nicht ganz so einfach..

also hier mal mein code:

aufruf z.B.
callClass("M0100");

Code:
	private void callClass(String klassenname) {

		System.out.println(klassenname);
		// erst den Packagenamen vor den Klassennamen stellen
		String str_klassenname = "Test." + klassenname;
		
		// so heissen die Methoden der Klassen(brauche ich um den ort zu bestimmen an denen die JInternalFrames stehen sollen)
		String method_name1 = "getWidthFrame";
		String method_name2 = "getHeightFrame";
		
		try {
			Class c = Class.forName(str_klassenname);
			Object object = c.newInstance();
			
			// hier hole ich height und witdh der ausgesuchten Klasse
			Method method1 = object.getClass().getMethod(method_name1, new Class[] {});
			Object width_frame = method1.invoke(object, new Object [] {});

			Method method2 = object.getClass().getMethod(method_name2, new Class[] {});
			Object height_frame = method2.invoke(object, new Object [] {});
			
			// in dieser Klasse ist der Desktop(kann man eigentlich gleich so verwenden!! also ohne eine neue instanz zu bilden)
			JDesktopPane _desktop = Auftrag.desktop;
			
			// der Klassenaufruf muss dann ungefähr so aussehen 
			// new klassenname(klassenname.toString(), Auftrag.desktop, width_frame, height_frame);
			// heisst aufruf der Klasse mit den Parametern titel, desktop, breite und höhe des JInternalFrames
			
		} 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();
		}
	}

weiss jemand wie ich das machen kann???

gruss
MScalli
 

Marco13

Top Contributor
Nochmal: WELCHE Methoden WELCHER Klasse willst du mit WELCHEN Parametern aufrufen? (getFrameWidth find' ich nirgends, und so, wie du sie geschrieben hast, HAT sie garkeine Parameter!?)
 

MScalli

Bekanntes Mitglied
Ich habe viele Klassen.. Es sind alles JInternalFrames.
Diese Klassen haben alle die Methoden getFrameWidth und getFrameHeight.
die brauche ich zur berechnung um die JInternalFrames im desktop zu platzieren.

ich will jetzt keine methode mehr aufrufen(hab ich ja schon ;) ) sondern eine klasse.
bis jetzt sieht das so aus(hardcodiert)

Code:
new M0100("M0100" , desktop, begin_width, begin_height);

in diesem beispiel will ich die Klasse M0100 mit 4 parametern aufrufen.
dem titel, dem desktop(ein JDesktopPane in dem alles geaddet werden soll), der breite und der höhe von M0100

um breite und höhe zu bekommen muss ich die vorangegangen aufrufe machen.
 

Tobias

Top Contributor
Ich glaube nicht, das Reflection (bekanntlich "Bug No 1") hier der richtige Weg ist. Die Benutzung von Interfaces erscheint mir weit vernünftiger. Aber dafür müßte ich zunächst verstehen, was du eigentlich vor hast ...

mpG
Tobias
 

MScalli

Bekanntes Mitglied
also ich habe mehrere Klassen die je nach auswahl in nem JTree aufgerufen werden sollen.

die zugehörigen namen der Klassen stehen alle in einer Textdatei. das MUSS auch so bleiben.

um die JInternalFrames immer richtig platzieren zu können haben sie die Methoden getFrameWidth und getFrameHeight.
wenn ich die breite der JInternalFrames von der breite des JDesktopPanes abziehe und das selbe mit der höhe mache habe ich die range in der die x y coordinaten des Fensters liegen müssen(linkes oberes eck)

das JDesktopPane desktop das in der Klasse Auftrag steht übergebe ich mit um die InternalFrames adden zu können.
(so tu ich mich am leichtesten.)

das mit der reflection(ich rede jetzt von nem klassenaufruf) geht einwandfrei bei mir.
leider weiss ich nicht wie ich nen klassenaufruf mit parametern machen kann!!

Ich habe leider noch nie ein Interface gemacht und hab ehrlich gesagt keinen plan wie ich das hin bekommen soll.
Die reflection habe ich hingegen schon paar mal genommen(deswegen auch die entscheidung das so zu lösen)
 
T

tuxedo

Gast
LOL... du kannst nicht mit Interfaces umgehen, traust dich aber an Reflection ran? *Respekt*

Wenn alle diese Klassen definitiv ein JInternalFrame sind, warum machst du dann nicht ein einfaches casting?

Code:
 Class c = Class.forName(str_klassenname);
         Object object = c.newInstance(); 
JInternalFrame myFrame = (JInternalFrame) object;

und rufst dann die bekannten Methoden von JInternalFrame (welche das dann auch immer sein mögen) auf?

- Alex
 

Tobias

Top Contributor
weil getFrameWidth() und getFrameHeight() keine JInternalFrame-Methoden sind ... - deshalb ja der Hinweis auf die Interfaces.

Code:
public interface SizeProvider {

    public int getFrameHeight();

    public int getFrameWidth();

}

Code:
public class XYFrame extends JInternalFrame implements SizeProvider {

    public int getFrameHeight() {
        // Implementierung
    }

    public int getFrameWidth() {
        // Implementierung
    }

}

Code:
public class SizeProviderFactory {

    public SizeProvider getSizeProvider(String name) throws Exception {
        Class clazz = Class.forName(name);
        return (SizeProvider) clazz.newInstance();
    }

}
 
T

tuxedo

Gast
Wie dem auch sei (hab nicht in die API geschaut *schande über mich*). Mit casten kommt man da jedenfalls schneller ans Ziel als mit Reflection. Und wenn jede dieser ominösen Klassen so eine Methode anbietet, dann bietet es sich in der Tat an ein Interface dafür zu benutzen und dann auf das Interface zu casten.

- Alex
 

MScalli

Bekanntes Mitglied
ups. da hab ich wohl was falsches gesagt. es sind eigentlich keine JIntenalFrames, sondern diese werden in den Klassen erzeugt. Sry.

deswegen muss ich ja auch das JDesktopPane übergeben um anschlissend die JInternalFrames zu adden.
sonst könnt ich ja sagen add(new M0100()).
hatte es eigentlich erst so.. aber dann sind nen haufen probs aufgetreten und ich habs so gelöst.

leider komm ich jetzt immer noch nicht weiter!!
denn mein problem sind eigentlich nicht die methoden aufzurufen, das geht ja schon.
mein prob besteh darin eine Instanz einer Klasse zu erstellen die parameter hat.

ausser ich pack alles in der hauptklasse in get methoden und mache es so das ich keine paramter übergeben muss..
dann müsste es ohne probleme gehen!!

ich glaub ich werd wohl noch rumprobieren müssen ^^
aber schon mal danke. ich werd das natürlich auch mal testen mit den interfaces.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Reflection -> getMethod bei optionalen Parametern Allgemeine Java-Themen 4
B Reflection gone wrong? Allgemeine Java-Themen 21
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
T Reflection - Abprüfen von Klasseneigenschaften Allgemeine Java-Themen 3
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
J Reflection-Method Hook? Allgemeine Java-Themen 14
J Reflection mit Klasse und Subklasse Allgemeine Java-Themen 11
X public Getter ersetzen (Reflection?!) Allgemeine Java-Themen 3
A Reflection Problem Allgemeine Java-Themen 15
K Generic class und Reflection Allgemeine Java-Themen 2
G SecurityManager/Policy-File/Reflection Allgemeine Java-Themen 0
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
E Reflection? Frage Allgemeine Java-Themen 4
B Reflection, invoke dynamisch befüllen Allgemeine Java-Themen 3
T Reflection Allgemeine Java-Themen 11
G Klassen Cast auf Argumentenklasse via Reflection? Allgemeine Java-Themen 10
H Collections Generics und Reflection Allgemeine Java-Themen 6
TheWhiteShadow Reflection-Lösung für Objektkopien Allgemeine Java-Themen 3
B Reflection: getMethods schlägt fehl (NoClassDefFoundE)) Allgemeine Java-Themen 15
P Reflection "Cast" Allgemeine Java-Themen 5
D Reflection-Performance Allgemeine Java-Themen 7
S Reflection und Generic Allgemeine Java-Themen 9
Kr0e Reflection - Instanz einer Klasse erstellen, ohne Default-Constructor Allgemeine Java-Themen 15
C Probleme mit dem Zugriff auf private Methode per reflection Allgemeine Java-Themen 2
C Zugriff auf private Methode per reflection geht nicht mehr Allgemeine Java-Themen 3
M Probleme mit Reflection Allgemeine Java-Themen 10
A Reflection Konstruktor Parameter Supertyp Allgemeine Java-Themen 2
D Vererbung, Reflection und automatischer Methodenaufruf Allgemeine Java-Themen 24
G Java Reflection Allgemeine Java-Themen 11
N Reflection: NoSuchMethodException obwohl Methode existiert Allgemeine Java-Themen 2
brunothg Problem mit Reflection Allgemeine Java-Themen 6
M reflection in inner classes Allgemeine Java-Themen 7
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
V Reflection - Field-Instanz und Annotations Allgemeine Java-Themen 6
Y Reflection und "extends" Schlüsselwort Allgemeine Java-Themen 3
R Reflection Problem Allgemeine Java-Themen 4
N getName() of reflection Object Allgemeine Java-Themen 4
P Reflection - Wie rufe ich die Felder einer Klasse in einer Methode der Basisklasse? Allgemeine Java-Themen 4
M Reflection Queue auslesen Allgemeine Java-Themen 6
N generic reflection Allgemeine Java-Themen 5
megachucky Java Reflection -> versteckte Felder finden? Allgemeine Java-Themen 3
MQue Reflection Exception Allgemeine Java-Themen 11
R Problem mit Reflection und Generics Allgemeine Java-Themen 3
ruutaiokwu Per Reflection membervariablen überschreiben / zuweisen / nullen Allgemeine Java-Themen 5
T Zugriff per Reflection o.ä. möglich? Allgemeine Java-Themen 18
R Reflection: Membervariablen-Initialwerte Allgemeine Java-Themen 4
G Reflection Allgemeine Java-Themen 6
V reflection in java 5 und 6 Allgemeine Java-Themen 2
C Reflection Übergabeparamter überprüfen? Allgemeine Java-Themen 3
Ark Konstruktor per Reflection nicht bekannt Allgemeine Java-Themen 4
Q Objekte durch Reflection erzeugen Allgemeine Java-Themen 18
G [Reflection + WebService] Methodenaufruf an einem Proxy Allgemeine Java-Themen 11
T Parameternamen mit Reflection-API Allgemeine Java-Themen 14
M Reflection Frage Allgemeine Java-Themen 7
G Code vereinfachen bei Reflection Allgemeine Java-Themen 4
I reflection get inner static classes Allgemeine Java-Themen 2
C Reflection Allgemeine Java-Themen 12
Y Reflection - wie kann ich eine Methode benutzen Allgemeine Java-Themen 4
Y Reflection - wie anwenden/benutzen bei folgendem Problem Allgemeine Java-Themen 3
P Java Reflection API - ResultDataModel ? Allgemeine Java-Themen 3
R Object Dynamisch erzeugen (Reflection API) Allgemeine Java-Themen 22
N Design-Frage: persistent machen per Reflection Allgemeine Java-Themen 3
G Reflection: aktuelle bzw umschliessende Methode? Allgemeine Java-Themen 7
G per Reflection auf private Klassenattribute zugreifen? Allgemeine Java-Themen 9
G Reflection objekt mit generics erzeugen Allgemeine Java-Themen 5
M per reflection private attributsnamen auslesen Allgemeine Java-Themen 3
G Interface - Klassen implementieren das - Reflection ok? Allgemeine Java-Themen 4
C Reflection Problem! Allgemeine Java-Themen 2
G Object cast via Reflection Allgemeine Java-Themen 8
T Reflection und Typsicherheit Allgemeine Java-Themen 5
Q Umgang mit Reflection Allgemeine Java-Themen 4
S reflection Allgemeine Java-Themen 12
X Reflection performant? Allgemeine Java-Themen 11
M Reflection und Serializable Allgemeine Java-Themen 5
A Reflection - Variablen innerhalb einer Methode ermitteln Allgemeine Java-Themen 9
F Performance von Reflection vs Statisches Coden Allgemeine Java-Themen 4
the[V]oid Primitive Arrays per Reflection erzeugen? Allgemeine Java-Themen 2
W Package via Reflection parsen Allgemeine Java-Themen 4
R Interface mittels Reflection implementieren Allgemeine Java-Themen 8
M reflection Integer != int ? Allgemeine Java-Themen 3
M reflection invoce Allgemeine Java-Themen 3
K Reflection:Zugriff auf innere Klassen Allgemeine Java-Themen 4
N NoSuchMethodException bei Reflection-Versuch, aber warum? Allgemeine Java-Themen 3
byte Methodenaufruf per Reflection? Allgemeine Java-Themen 2
M Generics und Reflection Allgemeine Java-Themen 3
M Array per Reflection manipulieren Allgemeine Java-Themen 5
M Klassen von ausserhalb des Jars per Reflection nachladen Allgemeine Java-Themen 2
thE_29 Reflection Allgemeine Java-Themen 6
M statische Methode per reflection aufrufen Allgemeine Java-Themen 2
B Frage zu Reflection Allgemeine Java-Themen 3
V Reflection - Problem Allgemeine Java-Themen 3
clemson Reflection Interface Allgemeine Java-Themen 4
G mit reflection an die felder einer klasse rankommen Allgemeine Java-Themen 4
N Reflection: An Package einer .class-Datei kommen Allgemeine Java-Themen 2
N Reflection: Feststellen ob eine Klasse abstract ist Allgemeine Java-Themen 3
B Reflection Allgemeine Java-Themen 10
C Reflection und variable casten ! Allgemeine Java-Themen 10
C Reflection - Kurze Beschreibung? Allgemeine Java-Themen 3
F Frage zum Thema Reflection Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben