绑定不匹配:类型不是有界参数的有效替代。

时间:2022-06-28 16:29:59

I am getting the following error Bound mismatch: The type FFTWTask is not a valid substitute for the bounded parameter <T extends AbsTask<T>> of the type AbsStage<T,U>

我得到了以下错误绑定不匹配:类型FFTWTask不是一个有效的替代,对于有界参数 > ,u> 扩展abstask

I am representing an abstract stage:

我代表一个抽象阶段:

public abstract class AbsStage<T extends AbsTask<T>, U extends AbsTask<U>> { }

Where an AbsTask is:

一个AbsTask是:

public abstract class AbsTask <T> { }

Then I create an AbsTask called FFTWTask:

然后我创建一个名为FFTWTask的AbsTask:

public class FFTWTask extends AbsTask<Double>{ }

Finally, I create an AbsStage called FFTWStage:

最后,我创建了一个名为FFTWStage的后台:

public class FFTWStage extends AbsStage<FFTWTask, FFTWTask>{ } // Error occurs here

What am I missing with my understanding of generics. I have found numerous posts that feature the same error message, but I cant seem to decipher them.

我对泛型的理解少了些什么。我发现了许多有相同错误信息的帖子,但我似乎无法解释它们。

Here is a simple class that achieves the error:

这里有一个简单的类,它实现了错误:

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

1 个解决方案

#1


2  

If the type parameter T in AbsStage must extend AbsTask<T>, then FFTWTask must extend AbsTask<FFTWTask> in order to be used in FFTWStage:

如果a型参数T在潜行阶段必须扩展AbsTask ,则FFTWTask必须扩展AbsTask ,以便在FFTWStage中使用:

public class FFTWTask extends AbsTask<FFTWTask>{ }

#1


2  

If the type parameter T in AbsStage must extend AbsTask<T>, then FFTWTask must extend AbsTask<FFTWTask> in order to be used in FFTWStage:

如果a型参数T在潜行阶段必须扩展AbsTask ,则FFTWTask必须扩展AbsTask ,以便在FFTWStage中使用:

public class FFTWTask extends AbsTask<FFTWTask>{ }