Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的惰性泛型类型传递_Java_Generics - Fatal编程技术网

java中的惰性泛型类型传递

java中的惰性泛型类型传递,java,generics,Java,Generics,假设我有一个简单的界面Status interface Status { Integer getNumber(); } 并具有简单的检索界面: interface A<T extends Status> { T getStatus(); } 如何在不添加通配符的情况下实现B.getStatus()->DateStatus?您需要做的是在B的定义中覆盖getStatus: 公共接口B扩展了{ @凌驾 T getStatus(); } 我考虑过这个方法,但它有一个我不

假设我有一个简单的界面
Status

interface Status {
    Integer getNumber();
}
并具有简单的检索界面:

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

如何在不添加通配符的情况下实现
B.getStatus()
->
DateStatus

您需要做的是在B的定义中覆盖getStatus:

公共接口B扩展了{
@凌驾
T getStatus();
}

我考虑过这个方法,但它有一个我不喜欢的问题,特别是,看B接口的局外人会看到两个方法:
Status getStatus()
DateStatus getStatus()
接口内部B如果没有它(由于Java的类型擦除),就会出现第22条陷阱。
interface DateStatus extends Status {
    Date getDate();
}

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

}
A.getStatus() -> Status

B.getStatus() -> Status

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