2013-10-15 30 views
6

Java'da genel bir tür güvenli gözlemci yazmak istiyorum. C++, ben C++ 11, aşağıdaki gibi variadic şablonu kullanarak bunu kolayca yapabilirsiniz:Java'da C++ variadic şablonlarının karşılığı

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

Şimdi, java, elimden gelen en iyisi:

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

, güncelleme C++ gibi farklı türlerde çoklu argüman alamaz. Birisi bu soruna bir çözüm önerebilir mi?

Şimdiden teşekkürler. Tüm bağımsız değişkenler/uzatmak durumunda

+0

Sorununuzu gerçekten anlamıyorum. Neden "void update (T ... args);"? – Daniel

+1

Tüm arjlar, kullanım durumunda mutlaka aynı türde değildir. –

cevap

4

diyebilirsiniz T uygulamak:

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

Bu, yalnızca alt türler yerine " Listesinin" olmasına izin verir. Örneğin, 'T' 'Number' deyin; Bu yapı bir parametre olarak bir 'List ' seçeneğine izin vermez. “ Listesi” diyebilirim daha uygun olurdu. –

+0

Tavsiye için teşekkürler. Cevabımı güncelledim –

0

önceden variadic formu kullanın, ancak grup bağımsız değişken kalmamak, başlığın gibi sınıf yaratıyor akla gelen tek şey. Ancak, bu cevap büyük ölçüde kullanım senaryosuna bağlıdır.
Teke tek analog yok.

İlgili konular