JAVA泛型和继承 - 将参数化类型传递给子类

时间:2014-01-28 00:27:17

标签: java generics inheritance

我已经看过其他问题而且找不到我想要的答案,虽然我很确定这是一个常见的问题而且我很笨。

我在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();

0 个答案:

没有答案