缺少泛型类

时间:2015-09-30 15:15:24

标签: java generics

使用具有抽象类A和接口IJ的库,当我扩展/实现类/接口时,我收到以下警告消息:

  

缺少泛型类J< T>的类型参数。

作为MWE,类如下(T和S是通用类型参数):

public abstract class A {}

public interface I<T extends A> {
    public <S extends T> void doStuff(J<? super S> param);
}

public interface J<T extends A> {
    public void doOtherStuff();
}

以下是我的课程:

public class AExtended extends A {}

public class IImplemented implements I<AExtended> {
    @Override
    public void doStuff(J param) {}
}

如下所示明确使用类AExtended并未正确实现I中的doStuff():

public class IImplemented implements I<AExtended> {
    @Override
    public void doStuff(J<AExtended> param) {}
}

2 个答案:

答案 0 :(得分:2)

尝试:

public class IImplemented implements I<AExtended> {
   @Override
   public <S extends AExtended> void doStuff(J<? super S> param) {
      // ...
   }
}

答案 1 :(得分:2)

您未在doStuff覆盖IImplemented,因为该方法不是通用的,并且类型边界不存在。此版本的doStuff应该适合您:

public <S extends AExtended> void doStuff(J<? super S> param) {}

请注意,由于I的类型为AExtended,因此在此处使用它,并且还包括J的通配符类型的下限。