Java 泛型扩展列表

标签 java generics

我有以下类(class):

public interface ServiceSynchronizableEntity {
    ....
}

public class BaseListResponse<T> {
    ....
}

public class BaseSynchronizableListResponse<T extends ServiceSynchronizableEntity> extends BaseListResponse<T> {
    ....
}

public class MySecondClass implements ServiceSynchronizableEntity {
    ....
}

public class MyFirstClass extends BaseSynchronizableListResponse<MySecondClass> {
    ....
}

public class What<S extends BaseSynchronizableListResponse<ServiceSynchronizableEntity>> {

}

然后我将其用作:

What what = new What<MyFirstClass>();

当我想使用MyFirstClass时作为扩展 BaseListResponse<ServiceSynchronizableEntity>> 的类型参数它向我展示了

Main.java:26: error: type argument MyFirstClass is not within bounds of type-variable S
    What what = new What<MyFirstClass>();
                         ^
where S is a type-variable: S extends BaseSynchronizableListResponse<ServiceSynchronizableEntity> declared in class What

出了什么问题?

编辑:缺少一门课。看:http://ideone.com/D4snKP

谢谢!

最佳答案

我之前发布的解决方案(现已删除)的类似之处在于它需要更改通用签名。

重要的变化来自:

class What<S extends BaseSynchronizableListResponse<ServiceSynchronizableEntity>> {}

至:

class What<S extends BaseSynchronizableListResponse<? extends ServiceSynchronizableEntity>> {}

参见http://ideone.com/wyXvcl对于固定版本

关于Java 泛型扩展列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26369002/

相关文章:

java - Android ViewGroup 删除 View ?

swift - config.preparations.append(modelName.self) 错误使用未解析的标识符 'modelName'

java - 程序立即终止

java - 基于java中的动态串行有序输入流对数据进行排序和分区

C# 错误 CS1061 : Type `System.Collections.Generic.List<int>' does not contain a definition for `Length'

generics - 访问通用结构中的字段

java - 实例化 Map 时使用 Wrapper 类作为键和值

c# - 嵌套泛型函数的类型推断

java - 如何在java小程序中像模拟时钟一样制作360度的线条动画

java - JTable 或 JXTable 中的列分隔符