2017-01-16 63 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存在。 –