2016-03-19 18 views
0

Yani böyle bir arabirim vardır:Nasıl bir sınıf 'generic tür başka bir çocuk ebeveyn ilişkisi olmayan bir başka nasıl yapılır?

public interface INotifier<T,G>{ 
    G getNotifications(){ 
    //does something 
    } 
} 

arabirimini uygulayan ve G.

Ve böyle getNotification yöntemi tüketir başka sınıf için farklı jenerik türleri vardır 2 diğer alt grubu mevcuttur:

public class Orchestrater<K>{ 
    K notifications = notifier.getNotifications(); 
} 

K'yi G ile aynı türden çıkarmak istiyorum. Fakat bir üst sınıf olarak Orchestrater'ım veya yansıtma yoluyla sonuçlandırmak için INotifier alt sınıfına sahip değilim. Nasıl yapılacağı hakkında bir fikrin var mı?

+1

' notifier.getNotifications(): Burada

sizin Orchestrator sınıfın bir Meta'da örneğidir. Ya süper sınıf bir argüman yoktur, ya da tasarımınız kapalı. Görebildiğimiz başka bir kod var mı? – Tgsmith61591

+0

Üzgünüm, benim hatam! Düzeltildi. Kodumu buna, gizli koduna dönüştürdüm. Yani ortaya çıkaramıyorum. Teşekkürler ! – Sid06

cevap

1

sizin Orchestrator<K> jenerik türü için biri olarak INotifier#getNotifications(T) dönüş türü için aynı resmi parametreye sahip olacak basit olmalı ve tüm notifier saha bildiriminde bağlıdır. `Hatta arayüz olarak aynı imza (hiçbir argüman geçirilir) sahip değildir;

public class Orchestrator<K> 
{ 
    private INotifier<Object, K> notifier; 

    public K getOrchestratedNotifications() { 
     return notifier.getNotifications(); 
    } 
} 
+0

Teşekkürler dostum! Bu yardımcı olur. :) – Sid06

+0

Yardımda olmaktan çok memnunum :) – tmarwen

İlgili konular