Bestimmte Methode von unbestimmter Datei

specialize

Bekanntes Mitglied
Hallo,

ich würde bitte gerne wissen, wie ich eine bestimmte Methode von einer auswählbaren Datei zugreifen kann.
Die Methode wäre immer an der selben Stelle der anderen Klasse.

Java:
String klname = new String(tf.getText());	
			str = Class.forName(klname);

Wie kann ich jetzt auf die Methoden in str zugreifen?
 
Ekhm....die Methode wäre immer "an der selben Stelle" ? was soll das denn bitte heißen. Willst du nicht etwa sowas wie statische Methoden benutzen ? Habe die Frage 5 mal durchgelesen und weiß immer noch nicht was du da meinst...
 
Mit Reflection eine Klasse laden ist kein Problem. Damit du danach nicht mit Reflection noch die Methode ausführen musst, kannst du dir einfach ein Interface erstellen, welches diese Methode deklariert. Natürlich muss die Klasse danach dieses Interface implementieren.
 
So in der Art, wenn du mit gleicher Stelle gleichen Methodennamen meinst.

Java:
    String klname = ...;   
    Class<?> str = Class.forName(klname); // Klasse laden, braucht auf jeden Fall den kompletten Package-Namen, wie java.lang.String etc
    Method method = str.getDeclaredMethod("NAME DER METHODE", /* hier die liste der Methodenparameter hin*/null);
    Object result = method.invoke(str.newInstance(), /**/null); // mit str.newInstance() holst du dir ein Objekt von der Klasse,
                        //damit du die Methode ausführen kannst, solange es eine Instanzmethode ist

Allerdings deutet das meiner Meinung nach auf einen Designfehler hin ...

Vielleicht sagst du grob, was du vorhast, und wir könnten dir Alternativen aufzeigen 😉
 
Ok danke schonmal.

Also:

Das eigentliche Ziel ist es, die Namen von den Tests in einer Testsuite (JUnit/Selenium) herauszubekommen. (Weil es nicht reicht, wenn die Namen nur bei einem Fehler ausgegeben werden > getFailures(), sondern eben auch bei erfolgreichem Test angezeigt werden sollen)

Allerdings soll der Benutzer die Testsuite auswählen können (durch Eingabe des Textfeldes).

Um jetzt an die Testbezeichnungen zu kommen, muss ich an die suite() methode in meiner Testsuite kommen.

Ekhm....die Methode wäre immer "an der selben Stelle" ?
Mit getMehods() hätte sie immer die selbe Stelle [0]

€:
Vorzeitige Lösung:

Java:
			String suitetorun = new String(tf_runts.getText());	
			str = Class.forName(suitetorun);			
			Method[] y= str.getDeclaredMethods();
			Method yx = y[0];
			Object o = yx.invoke(str.newInstance(), null);			
			TestSuite s2 = (TestSuite)o;

Wenn ihr was besseres habts, lasst es mich bitte wissen.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben