Reflection

Maik20

Erfahrenes Mitglied
Hi,

ich möchte mittels Reflection zwei Methoden aufrufen, da die Funktionen sozusagen optional sind. Daher darf die import Funktion nicht genutzt werden.

Mein Ansatz ist wie folgt:

Code:
try {
	Object player = Class.forName("net.org.media.Player").newInstance();
		} catch (InstantiationException e2) {
		} catch (IllegalAccessException e2) {
		} catch (ClassNotFoundException e2) {
		}

Wenn ich jetzt versuche die beiden Methoden aufzurufen:

Code:
String s = "datei";
if (player.getStatus() != 5){
    player.play(s); 
}

Meckert er, da das Object die Funktionen getStatus und play nicht kennt.

Wie stelle ich das an?
 
Ich kann mir vorstellen, dass das daran liegt, dass player vom Typ Object ist und nicht vom Typ net.org.media.Player.


Java:
net.org.media.Player player = Class.forName("net.org.media.Player").newInstance();

Zur Compilezeit sollte das Programm die Klasse ja kennen... Aber ich kenne mich mit Reflection nicht gut aus, ist nur eine Vermutung.
 
Hallo,

Hier mal ein ungeprüftes Beispiel, sollte aber so klappen:

Code:
            try
            {
                Object player = Class.forName("net.org.media.Player").newInstance();

                Method m = player.getClass().getMethod("play", new Class[] {String.class});
                m.invoke(this, "meinStringParameter");
            }
            catch(Exception ex)
            {
                System.err.println("Fehler: "+ex.getLocalizedMessage()+ex.getCause()+"#"+ex.getClass()+")");
            }


Wie gesagt, ist ungeprüft. Bei Fragen darfst dich gerne nochmal hier melden.

Gruß
DEV

EDIT: Hab im Eifer total überlesen, dass dieser Beitrag ja schon über ein Jahr alt ist... :-(
 
Zuletzt bearbeitet:
Zurück