2013-10-15 24 views
6

Desidero scrivere un osservatore sicuro di tipo generico in Java. In C++, posso facilmente farlo utilizzando template variadic da C++ 11, come segue:Equivalente di modelli variadici C++ in Java

class Observer<typename... T> 
{ 
    void update(T... args); 
}; 

Ora, in Java, il meglio che potessi fare è:

class Observer<T> 
    { 
     void update(T args); 
    }; 

Ora, aggiornamento non può accettare più argomenti di tipi diversi come in C++. Qualcuno potrebbe suggerire una soluzione a questo problema?

Grazie in anticipo.

+0

Non capisco davvero il tuo problema. Perché non usare 'void update (T ... args)?'? – Daniel

+1

Non tutti gli argomenti sono necessariamente dello stesso tipo nel suo caso d'uso. –

risposta

4

Se tutti gli argomenti si estendono/implementare T si può dire:

class Observer<T>{ 
     void update(List<? extends T> args){} 
} 
+2

Ciò consentirebbe solo 'Elenco ' piuttosto che sottotipi. Ad esempio, "T" è "Numero"; questo costrutto non permetterebbe un 'Elenco ' come parametro. Direi che 'Lista ' sarebbe più appropriato. –

+0

Grazie per il consiglio. Ho aggiornato la mia risposta –

0

L'unica cosa che viene in mente è la creazione di classe come tuple, in modo da non usare la forma variadic, ma args di gruppo in anticipo. Tuttavia, questa risposta dipende fortemente dallo scenario di utilizzo.
Non esiste un analogo one-to-one.

Problemi correlati