Plugin-System programmieren / implementierungen eines Interfaces herausfinden

th0r4x2

Grünschnabel
Hallo!

Gibt es eine Möglichkeit, alle Klassen die ein bestimmtes Interface implementieren zur Laufzeit zu bestimmen?
Ich möchte daraus ein Plugin-System für ein Projekt basteln.
Ich habe im Internet u.a. das Jakarta Discovery Projekt gefunden, jedoch hat das bei mir nicht so ganz funktioniert.
Weiß jemand wie das funktioniert?

Gruß
Chris
 
Hi!

Ich habe mir die URL gerade mal angeschaut und der Punkt "Identifying the Interfaces Implemented by a Class" hört sich sehr gut an.
Ich habe das dann sofort getestet, jedoch bekomme ich nur das Interface "java.io.Serializable" gesagt. Geht das nur mit den Standart-Interfaces?

Mein Ansatz wäre gewesen, alle Klassen zu durchlaufen und zu überprüfen ob die das Interface implementieren.

Gruß
Chris
 
Hallo!

Also bei mir funktioniert folgendes einwandfrei:
Code:
package de.tutorials;

import java.io.Serializable;

public class InterfaceTest {

	public static void main(String[] args) {
		new InterfaceTest().doIt();
	}

	private void doIt() {
		Class[] interfaces = A.class.getInterfaces();
		for (int i = 0; i < interfaces.length; i++) {
			System.out.println(interfaces[i].getName());
		}
	}
	
	interface IBar{
		public void foo();
	}
	
	class A implements Serializable,IBar, Cloneable{
		public void foo() {
			System.out.println("foo");
		}		
	}
}

Ausgabe:
java.io.Serializable

de.tutorials.InterfaceTest$IBar

java.lang.Cloneable

Gruß Tom
 
Hey super, danke :-)
Ich hatte nen kleinen Fehler drin, den ich leider übersehen hatte.
Weiß jemand wie ich in einer Schleife alle Klassen durchlaufen kann, um zu überprüfen ob sie ein bestimmtes interface implementieren?
Wäre echt super.

Gruß
Chris
 
Hi!

Eigentlich alle Klassen meiner Anwendung, aber es würde auch reichen wenn alle Klassen eines bestimmten packages gelistet werden.

Ich wollte es mit der getClasses Funktion der Reflection API versuchen, jedoch habe ich gelesen dass die nur die Unterklassen einer Klasse listet.

Gruß
Chris
 
Zurück