2017-01-16 64 views
0

比方說,我有簡單的界面Status懶泛型類型通在Java

interface Status { 
    Integer getNumber(); 
} 

,並有簡單的界面,檢索:

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

我很感興趣,我可以做的簡化版本:

interface DateStatus extends Status { 
    Date getDate(); 
} 

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

} 

對於接口B從擴展的方法10,getStatus()返回DateStatus的實例?

簡單的例子:

A.getStatus() -> Status 

B.getStatus() -> Status 

B<DateStatus>.getStatus() -> DateStatus 

我如何能實現B.getStatus() - >DateStatus無添加通配符?

回答

0

你需要做的是在B的定義覆蓋的getStatus

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

我想到了這個方法,但它有1個問題,我沒有特別喜歡的, 局外人誰看接口B會看到2種方法: '的getStatus狀態()' 'DateStatus的getStatus()' 界面B1 – Osvaldas

+0

孔內部沒有它(由於Java的類型擦除)有一個陷阱-22存在。 –