使用具有抽象类 A
和接口(interface) I
和 J
的库,当我扩展/实现类/接口(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/