2017-01-16 2 views
0

Lassen Sie uns sagen, dass ich StatusFaule generischer Typ Pass in java

interface Status { 
    Integer getNumber(); 
} 

und verfügen über eine einfache Schnittstelle zum Abrufen es einfache Schnittstelle haben:

interface A<T extends Status> { 
    T getStatus(); 
} 

Was ich bin interessiert kann ich vereinfachte Version:

interface DateStatus extends Status { 
    Date getDate(); 
} 

interface B<T extends DateStatus> extends A<T> { 

} 

Für Schnittstelle B Methode ausverlängert 10, getStatus() gibt eine Instanz von DateStatus zurück?

einfaches Beispiel:

A.getStatus() -> Status 

B.getStatus() -> Status 

B<DateStatus>.getStatus() -> DateStatus 

, wie ich B.getStatus() erreichen kann ->DateStatus ohne Wildcard Zugabe?

Antwort

0

Was Sie tun müssen, ist in der Definition von B überschreiben die getStatus:

public interface B<T extends DateStatus> extends A<T> { 
    @Override 
    T getStatus(); 
} 
+0

ich über diese Methode gedacht, aber es haben 1 Problem, das ich insbesondere nicht mögen, Außenseiter, der schaut B Schnittstelle siehe 2 Methoden: 'der Status getStatus()' ' DateStatus getStatus()' innere Schnittstelle B – Osvaldas

+0

Nun, ohne es (aufgrund von Java Typ Löschung) gibt es ein Catch-22 gibt. –