Hallo Leute!
Ich bin noch ein ziemlicher Neuling, was reflection angeht und habe gerade mit folgendem Problem zu kämpfen:
Ich versuche auf einige externe Libraries (JAR-Pakete) mit Reflection zuzugreifen.
Ohne die Reflection würde sich folgender Code ergeben:
Dabei ist "ActiveMQConnectionFactory" eine ganz normale Klasse. Der Methodenaufruf "createTopicConnection" liefert ein Interface vom Typ "TopicConnection" zurück. Danach wird die Methode des Interfaces aufgerufen.
Das Gleiche versuche ich jetzt mit Reflection zu machen und habe folgendes geschafft:
"urls" ist ein Array mit URL-Objekten. Ich lade die Klasse "ActiveMQConnectionFactory" aus einem jar-Paket und erzeuge ein Objekt der Klasse. Danach greife ich auf die Methode "createTopicConnection" zu und rufe sie später mit "invoke" auf. Ich bekomme allerdings ein Interface zurück, wovon ich kein Objekt erzeugen kann, um die Methode "start" aufzurufen.
Ist es möglich die Methode trotzdem aufzurufen?
Danke schon mal im Voraus!
Ich bin noch ein ziemlicher Neuling, was reflection angeht und habe gerade mit folgendem Problem zu kämpfen:
Ich versuche auf einige externe Libraries (JAR-Pakete) mit Reflection zuzugreifen.
Ohne die Reflection würde sich folgender Code ergeben:
Code:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
TopicConnection connection = connectionFactory.createTopicConnection();
connection.start();
Dabei ist "ActiveMQConnectionFactory" eine ganz normale Klasse. Der Methodenaufruf "createTopicConnection" liefert ein Interface vom Typ "TopicConnection" zurück. Danach wird die Methode des Interfaces aufgerufen.
Das Gleiche versuche ich jetzt mit Reflection zu machen und habe folgendes geschafft:
Code:
URLClassLoader loader = new URLClassLoader(urls);
Class extClass = loader.loadClass("org.apache.activemq.ActiveMQConnectionFactory");
Object o = extClass.newInstance();
Method m = extClass.getMethod("createTopicConnection");
Object o2 = m.invoke(o);
"urls" ist ein Array mit URL-Objekten. Ich lade die Klasse "ActiveMQConnectionFactory" aus einem jar-Paket und erzeuge ein Objekt der Klasse. Danach greife ich auf die Methode "createTopicConnection" zu und rufe sie später mit "invoke" auf. Ich bekomme allerdings ein Interface zurück, wovon ich kein Objekt erzeugen kann, um die Methode "start" aufzurufen.
Ist es möglich die Methode trotzdem aufzurufen?
Danke schon mal im Voraus!