我已经看过其他问题而且找不到我想要的答案,虽然我很确定这是一个常见的问题而且我很笨。
我在Java中有以下类:
public abstract class A<U extends User>{
U user;
public U getUser(){
return user;
}
//methods and stuff
}
然后我有:
public abstract class B<U extends User> extends A<U>{
// some more methods and stuff
}
最后我有
public class C extends B<SuperUser>{
}
然后我有:
class SuperUser extends User{
}
class User {}
通过这种安排,我在C:
中得到了这个错误B型不是通用的;它不能使用参数SuperUser
进行参数化
如果我从C中删除<SuperUser>
,我会收到警告:
B是原始类型。对泛型类型B的引用应该参数化
那么,拜托,我做错了什么?我的目标是让这些代码在没有警告/未经检查的强制转换等的情况下工作:
C myC = new C();
SuperUser user = myC.getUser();