缺少泛型类的类型参数

3

使用一个包含抽象类 A 和接口 IJ 的库时,当我扩展/实现这些类和接口时,我会得到以下警告信息:

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

作为一个最小工作示例,如下所示(其中 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个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
1

尝试使用:

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

1

您没有在IImplemented中重写doStuff方法,因为该方法不是泛型且类型边界不存在。以下版本的doStuff应该适用于您:

public <S extends AExtended> void doStuff(J<? super S> param) {}
请注意,由于I的类型为AExtended,因此在此处适当地使用它,并且在J的通配符类型中也包括了下限。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,