Sto cercando di creare un particolare tipo di interfaccia in Java (anche se questo è applicabile alle classi regolari). Questa interfaccia dovrebbe contenere un metodo, per esempio, invoke
; sarebbe chiamato con una quantità variabile di parametri a seconda degli argomenti di tipo generico forniti.In Java, posso specificare qualsiasi quantità di parametri di tipo generico?
Per fare un esempio:
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
}
};
di spiegare, in breve, come questo potrebbe essere utilizzato (e fornire alcuni contesto), prendere in considerazione una classe Delegator
: la classe prende un numero variabile di tipi generici, e ha un unico metodo - invoke
, con questi tipi di parametri. Il metodo passa i suoi parametri a un oggetto in un elenco: un'istanza di IDelegate
, che accetta gli stessi tipi generici. Ciò consente a Delegator
di scegliere tra diversi metodi delegati (definiti all'interno di IDelegate
) senza dover creare una nuova classe per ogni elenco specifico di tipi di parametri.
È disponibile qualcosa di simile? Ho letto su variadic templates in C++, ma non riesco a trovare nulla di simile in Java. Qualcosa del genere è disponibile? In caso contrario, quale sarebbe il modo più pulito per emulare lo stesso modello di dati?
Per dirla in questo modo: 'Coppia
' sarebbe sufficiente. Ma dal momento che nessuno vuole un 'paio >>>', le cose di questo tipo vengono solitamente risolte in modo diverso. O eliminando del tutto la sicurezza del tipo o con le librerie come http://www.javatuples.org/ –
Marco13