我收到以下错误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>{ }

10-06 10:55