Einfaches Nutzen von Plugins mittels generischer Methode

Status
Nicht offen für weitere Antworten.
D

deprecated

Gast
Ich implementiere gerade eine kleine Applikation mit einer Art Plugin-System.
Plugins können sogenannte Services implementieren, die wiederum von anderen Plugins benutzt werden können.
Jeder Service wird in Form eines Subinterfaces beschrieben, das vom Hauptinterface Service erbt.

Code:
interface Service {


}

interface XYService extends Service {

     public Object use();

}


Nun zum Problem:
Ich suche nach einem einfachen Mechanismus, der es einem Plugin ermöglicht, möglichst einfach einen bestimmten Service zu nutzen, ohne die Klasse, die diesen Service konkret implementiert, zu kennen.

Welches Plugin für welchen Service herangezogen werden soll (das nenne ich ab jetzt Service-Provider), steht in einer Hashmap

Code:
private HashMap<Class,Service> map;

Hier kann man mit
Code:
 map.get(XYService.class);
den aktuellen Service-Provider abrufen und anschließend benutzen.

Um zu verhindern, dass Plugin-Entwickler den Umweg über die Hashmap, Casting und das class-Objekt gehen müssen, habe ich folgende generische Methode implementiert.

Code:
	public static <S extends Service> S provider() {

	}

Diese Methode können Plugins benutzen um den Service-Provider für einen bestimmten Service zu erhalten. Die Methode funktioniert eigentlich auch, d.h. sie gibt korrekt getypte Referenzen zurück.

Die Frage ist jetzt: wie implementiere ich den Methodenrumpf, d.h. wie bringe ich die Methode dazu, immer den passenden Service-Provider aus der Hashmap herauszuholen?

So etwas wie
Code:
 return map.get(S.class);
funktioniert nicht, weil schon S.class nicht möglich ist.
Was mir also fehlt ist das class-Objekt zu der konkreten Klasse, mit der die generische Methode gerade aufgerufen wurde.


Über Tipps wie das hinzubekommen wäre, bin ich sehr dankbar ;-)
 
G

Gast

Gast
generics existieren zur laufzeit nicht mehr. dir bleibt aber immer noch der "klassische" weg, einfach ein Class objekt als parameter zu fordern.
 

Wildcard

Top Contributor
Im übrigen würde ich dir davon abraten das eckige Rad neu erfinden zu wollen.
Schau dir mal OSGi und dessen verschiedene Implementierungen wie
Eclipse Equinox, oder Apache Felix an.
 
D

deprecated

Gast
Wildcard hat gesagt.:
Im übrigen würde ich dir davon abraten das eckige Rad neu erfinden zu wollen.
Grundsätzlich hast du da natürlich recht. An solche Lösungen habe ich auch schon gedacht, konkret habe ich JPF ausprobiert. Allerdings stellen solche Framworks oft viel mehr Funktionalität zur Verfügung als ich eigentlich benötige.

Da ich mit meinem Ansatz bereits angefangen habe, bin ich (mehr oder weniger aus reiner Neugierde) für weitere Tips offen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Einfaches Beispiel mit Netty Socket.IO Allgemeine Java-Themen 6
temi Einfaches Eventhandling führt zu Brett vor Kopf Allgemeine Java-Themen 2
S Einfaches Programm programmieren Allgemeine Java-Themen 5
K Einfaches Array in 2 neue aufteilen. Allgemeine Java-Themen 2
A Lotto, einfaches Problem? Allgemeine Java-Themen 11
E einfaches Beispiel zu MVC und Sinn V --> M ? Allgemeine Java-Themen 22
M einfaches Lagerverwaltungsapp Allgemeine Java-Themen 4
Gossi Threads Suche ein (einfaches) Beispiel Allgemeine Java-Themen 5
E Beispiel für ein möglichst einfaches Interface Allgemeine Java-Themen 22
V Ganz einfaches MVC-Beispiel?! Allgemeine Java-Themen 107
E Einfaches Problem mit Tomcat Allgemeine Java-Themen 18
W Einfaches Installer/setup tool für java programme das. Allgemeine Java-Themen 4
E (einfaches) Problem mit import und package (export) Allgemeine Java-Themen 4
J Einfaches AspectJ Beispiel Allgemeine Java-Themen 2
reibi javax.crypto.SecretKey - Einfaches Beispiel gewünscht ;-) Allgemeine Java-Themen 2
T Einfaches Java Programm PHP5-fähig machen Allgemeine Java-Themen 19
V Suche einfaches JasperReports Tutorial Allgemeine Java-Themen 23
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
berserkerdq2 Shapes als Buttons nutzen, schlechter Programmierstyle? Allgemeine Java-Themen 1
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
M pfx-Zertifikat in Tomcat für SSL-Verschlüsselung nutzen Allgemeine Java-Themen 14
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
X Java gewerblich nutzen mit externe Bibliothek. Was zu beachten? Allgemeine Java-Themen 18
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
xYurisha Nutzen von Importmethoden bei Klasseninstanzen Allgemeine Java-Themen 12
Neumi5694 Best Practice Vorhandene Programminstanz nutzen Allgemeine Java-Themen 3
S Eclipse Github Projekt in eigenes Projekt einbinden und nutzen Allgemeine Java-Themen 13
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
Neumi5694 Offenes Programm nutzen Allgemeine Java-Themen 4
T javax.script (JavaScript): Nicht-JRE-Packages importieren/nutzen Allgemeine Java-Themen 4
S Welche Nutzen bringen Lamda Expressions? Allgemeine Java-Themen 1
B Lua als Konfigurationsdatei nutzen - ein Krampf Allgemeine Java-Themen 4
F Über Java Google Suche nutzen Allgemeine Java-Themen 11
A COM und JAVA nutzen Allgemeine Java-Themen 1
J C++ Projekt (QT) in Java mit Klassen (nicht imperativ) nutzen (BridJ? JavaCPP? SWIG? JNA? JNI?) Allgemeine Java-Themen 2
D Nutzen, erst deklarieren, oder neu erstellen? Allgemeine Java-Themen 11
S lp_solve mit Java nutzen - Can't find dependent libraries Allgemeine Java-Themen 8
T HTTP HttpWebRequest in Swing-Projekt nutzen Allgemeine Java-Themen 4
M DLL aus jar extrahieren und als lib nutzen Allgemeine Java-Themen 24
G RXTX in proprietärer Software nutzen?! Allgemeine Java-Themen 10
C Variablen Variable einer Klasse in einer anderen Klasse Nutzen Allgemeine Java-Themen 8
thetagman Programmidee: VirtualCorkboard - Evaluation, Nutzen & Meinung Allgemeine Java-Themen 12
D Darf ich jakarta bibliotheken ohne weiteres nutzen? Allgemeine Java-Themen 10
S Profiler-Funktionen in eigener Applikation nutzen..? Allgemeine Java-Themen 5
C Kann Methode nicht aus Klassenname implements Runnable nutzen Allgemeine Java-Themen 7
G C# DLL in Java nutzen Allgemeine Java-Themen 4
T cpp Programm via jna in java nutzen Allgemeine Java-Themen 3
Meldanor Datei aus jar nutzen Allgemeine Java-Themen 4
J Alte version nutzen Allgemeine Java-Themen 4
M Rechenweg in Datenbank speichern und nutzen Allgemeine Java-Themen 6
G konstanter String[] laesst sich nicht in Annotation nutzen Allgemeine Java-Themen 2
G Variable global nutzen Allgemeine Java-Themen 4
D Welches Pattern kann ich nutzen? Allgemeine Java-Themen 9
H StartupFolder nutzen! Aber wie? Allgemeine Java-Themen 4
V Setter zum Berechnen nutzen? Allgemeine Java-Themen 5
G Was nutzen statt Mehrfachvererbung? Allgemeine Java-Themen 7
R Wie Google & Co mit Java nutzen? Allgemeine Java-Themen 16
W InputStream öfters nutzen Allgemeine Java-Themen 9
H einzelner Thread --> Nutzen?! Allgemeine Java-Themen 3
L Wie Pattern anwenden um Cipher zu nutzen Allgemeine Java-Themen 2
G DB connection in anderen Klassen nutzen! Allgemeine Java-Themen 7
K Warum static-Methoden nutzen Allgemeine Java-Themen 26
E NT-Anmeldung in Java Client-Applikation nutzen. JAAS ? Allgemeine Java-Themen 5
M java api offline nutzen? Allgemeine Java-Themen 4
J COM-Port unter Windows nutzen Allgemeine Java-Themen 2
B Programm unter GPL nutzen Allgemeine Java-Themen 6
K Problem mit Vererbung - Kein wirklicher Nutzen. Allgemeine Java-Themen 10
T GPL Code inkommerzieller Software nutzen? Allgemeine Java-Themen 26
G Funktionstasten nutzen Allgemeine Java-Themen 3
S Klassen aus JDK 1.5. außerhalb von 1.5. nutzen Allgemeine Java-Themen 6
S MediaTracker nutzen um festzustellen ob schreibvorgang ende. Allgemeine Java-Themen 5
M Webstart nutzen? Allgemeine Java-Themen 9
thE_29 Externe (unbekannte) Klasse nutzen Allgemeine Java-Themen 11
P DLLs nutzen Allgemeine Java-Themen 3
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
J Anzahl geöffneter Plugins Allgemeine Java-Themen 3
M Eclipse Fehler beim Installieren des Plugins "Jigloo" Allgemeine Java-Themen 12
B Grundlagen: Pluginschnittstelle/Plugins Allgemeine Java-Themen 4
D Programm mit plugins Allgemeine Java-Themen 3
M Plugins für eigene Programme Allgemeine Java-Themen 3
A Eigene Java Plugins entwickeln - wie optimal? Allgemeine Java-Themen 14
V javadoc mergen / aus mehreren eclipse plugins ein javadoc Allgemeine Java-Themen 3
P Plugins wie in ImageJ, Schadcode ausschließen Allgemeine Java-Themen 4
T Möglichkeiten der Kommunikatin zwischen Plugins in Ecl. RCP Allgemeine Java-Themen 3
A Plugins laden mit Class.forName() Allgemeine Java-Themen 2
P myEclipse 5.x mit Matisse4MyEclipse und kompatible plugins Allgemeine Java-Themen 2
G Probleme mit Plugins Allgemeine Java-Themen 5
G Photoshop Plugins in Java verwenden. Allgemeine Java-Themen 3
L Plugins in Java realisieren: Wie könnte man so etwas machen? Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben