DarthShader
Erfahrenes Mitglied
Hallo,
ich habe eine Frage zu Java's generischen Methoden. Ich habe hier folgende statische Methode:
Ich kann sie so verwenden, dass ich sage:
oder
Man sieht also, dass ich den zurückgegebenen Typ von getInstance nicht casten muss, da er generisch ist.
Was ich nun aber möchte:
Man kann der Methode getInstance momentan alle möglichken Klassen übergeben, egal was. Gibt es nicht eine Möglichkeit, das zu beschränken? Sagen wir, getInstance soll als Parameter nur Klassen entgegeben nehmen, die das Interface "Test" implementieren (also vom Typ "Test" sind)? Ich denke dazu muss man die Signatur der Methode irgendwie entsprechend verändern, speziell dieses "Class< ? extends T > clazz" - aber ich weiß leider nicht wie.
Ich hoffe, mir kann dabei jemand helfen.
Vielen Dank!
ich habe eine Frage zu Java's generischen Methoden. Ich habe hier folgende statische Methode:
Java:
public static <T> T getInstance( Class< ? extends T > clazz )
{
Object s = null;
// ...einiges an Code...
return clazz.cast( s );
}
Ich kann sie so verwenden, dass ich sage:
Java:
AndereKlasse andereKlasse = Service.getInstance( AndereKlasse.class );
oder
Java:
GanzAndereKlasse ganzAndereKlasse = Service.getInstance( GanzAndereKlasse.class );
Man sieht also, dass ich den zurückgegebenen Typ von getInstance nicht casten muss, da er generisch ist.
Was ich nun aber möchte:
Man kann der Methode getInstance momentan alle möglichken Klassen übergeben, egal was. Gibt es nicht eine Möglichkeit, das zu beschränken? Sagen wir, getInstance soll als Parameter nur Klassen entgegeben nehmen, die das Interface "Test" implementieren (also vom Typ "Test" sind)? Ich denke dazu muss man die Signatur der Methode irgendwie entsprechend verändern, speziell dieses "Class< ? extends T > clazz" - aber ich weiß leider nicht wie.
Ich hoffe, mir kann dabei jemand helfen.
Vielen Dank!