我收到以下错误Bound mismatch: The type FFTWTask is not a valid substitute for the bounded parameter <T extends AbsTask<T>> of the type AbsStage<T,U>
我代表一个抽象的阶段:
public abstract class AbsStage<T extends AbsTask<T>, U extends AbsTask<U>> { }
AbsTask在哪里:
public abstract class AbsTask <T> { }
然后创建一个名为FFTWTask的AbsTask:
public class FFTWTask extends AbsTask<Double>{ }
最后,我创建一个称为FFTWStage的AbsStage:
public class FFTWStage extends AbsStage<FFTWTask, FFTWTask>{ } // Error occurs here
我对泛型的了解让我错过了什么。我发现许多帖子具有相同的错误消息,但我似乎无法解读它们。
这是一个实现错误的简单类:
public class Test {
public abstract class AbsTask <T> { }
public class FFTWTask extends AbsTask<Double>{ }
public abstract class AbsStage<T extends AbsTask<T>, U extends AbsTask<U>> { }
public class FFTWStage extends AbsStage<FFTWTask, FFTWTask>{ } // Error here <-
}
最佳答案
如果T
中的类型参数AbsStage
必须扩展AbsTask<T>
,则FFTWTask
必须扩展AbsTask<FFTWTask>
以便在FFTWStage
中使用:
public class FFTWTask extends AbsTask<FFTWTask>{ }