Ich bin auf der Suche nach einer bestimmten Art von Schnittstelle in Java (obwohl das gilt auch für reguläre Klassen). Diese Schnittstelle müsste eine Methode enthalten, beispielsweise invoke
; Es würde mit einer variierenden Anzahl von Parametern aufgerufen, abhängig von den generischen Typargumenten, die geliefert wurden.Kann ich in Java eine beliebige Anzahl generischer Typparameter angeben?
Als Beispiel:
public interface Foo<T...> {
public void invoke(T... args);
}
// In some other class
public static Foo<Float, String, Integer> bar = new Foo<Float, String, Integer>() {
@Override
public void invoke(Float arg1, String arg2, Integer arg3) {
// Do whatever
}
};
Um zu erklären, kurz, wie diese verwendet werden könnten (und etwas Kontext zu machen) betrachten wir eine Klasse Delegator
: Die Klasse nimmt eine unterschiedliche Anzahl von generischen Typen und hat eine einzige Methode - invoke
, mit diesen Parametertypen. Die Methode gibt ihre Parameter an ein Objekt in einer Liste weiter: eine Instanz von IDelegate
, die dieselben generischen Typen verwendet. Dies ermöglicht Delegator
, zwischen mehreren Delegate-Methoden zu wählen (definiert in IDelegate
), ohne dass für jede spezifische Liste von Parametertypen eine neue Klasse erstellt werden muss.
Ist so etwas verfügbar? Ich habe in C++ über variadic templates gelesen, kann aber in Java nichts Ähnliches finden. Gibt es so etwas? Wenn nicht, was wäre der sauberste Weg, das gleiche Datenmodell zu emulieren?
Um es so zu sagen: 'Paar
' wäre ausreichend. Aber da niemand ein 'Paar >>>' will, werden solche Dinge normalerweise anders gelöst. Entweder, indem Sie die Sicherheit ganz weglassen, oder mit Bibliotheken wie http://www.javatuples.org/ –
Marco13