# Plugin-System programmieren / implementierungen eines Interfaces herausfinden



## th0r4x2 (14. November 2004)

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


----------



## Vincentius (14. November 2004)

Hallo,

ich kenne das Jakarta Discovery Projekt nicht, aber das, was Du vor hast, lässt sich relativ einfach mit der Java Reflection API machen: http://java.sun.com/docs/books/tutorial/reflect/


----------



## th0r4x2 (14. November 2004)

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


----------



## Thomas Darimont (14. November 2004)

Hallo!

Also bei mir funktioniert folgendes einwandfrei:

```
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


----------



## th0r4x2 (14. November 2004)

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


----------



## Thomas Darimont (14. November 2004)

Hallo!

Was meinst du mit "alle Klassen"? Alle Klassen deiner Anwendung, eines speziellen Jar-Files oder des JDK's?

Gruß Tom


----------



## th0r4x2 (14. November 2004)

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


----------

