我有以下类(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/