ich eine Methode schreibe, die ein Class
als Argument übergeben wird, wie folgt aus:Gibt an, dass ein Gerät der Klasse Argument eine bestimmte Schnittstelle implementieren muss
public void doStuff(Class<?> clazz) {
/* do stuff */
}
ich dann das Verfahren wie folgt aufrufen können:
doStuff(FooBar.class);
Wie erzwinge ich auf der Compiler-Ebene, dass das Argument nur eine Klasse sein kann, die eine bestimmte Schnittstelle implementiert?
habe ich versucht, die folgenden-
public <T extends FooInterface> void doStuff(Class<T> clazz) {
/* do stuff */
}
-aber einen Compiler-Fehler für die folgende Anweisung zu erhalten:
doStuff(FooBar.class); // FooBar implements FooInterface
Wie mache ich das richtig?
Stellen Sie ein komplettes minimal Beispiel reproduziert das Problem, und posten den genauen und vollständigen Übersetzungsfehler . –
Zeigen Sie uns die 'FooBar' Klasse – Sweeper
Got it-der Code selbst war in Ordnung, der Kompilierungsfehler war über eine nicht abgefangene Ausnahme. Ein try/catch-Block um den eigentlichen Methodenaufruf hat es behoben. Vielen Dank! – user149408