java - 缺少泛型类的类型参数

标签 java generics

使用具有抽象类 A 和接口(interface) IJ 的库,当我扩展/实现类/接口(interface):

Missing type arguments for generic class 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();
}

这是我的类(class):

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) {}
}

最佳答案

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

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

请注意,由于 I 的类型是 AExtended,因此在这里使用得当,J 的通配符类型的下限是也包括在内。

关于java - 缺少泛型类的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869748/

相关文章:

C# 不同对象列表的通用方法

c# - 通过将另一个属性与不同列表进行比较来从源列表中选择 ID

c# - 将 LINQ 表达式移植到 Java

java - 无法访问 Spring Boot 的请求映射

java - 如何在 switch 中使用 try catch 一会儿

scala - 对两种类型之间的二元关系建模

java - 从 Flux<Integer> 中分块读取

java - PowerMockito 模拟静态方法抛出异常

arrays - 创建 TPair TArray 的编译器错误

java - 将 java.util.list 转换为 java.util.list 时出现编译器错误?