Java 中没有合适的通用名称和 HAS-A 关系

No suitable name with generic and HAS-A relation in Java

我有以下 类:

public abstract class AbstractElement<V extends AbstractElementView, M extends AbstractElementModel> {

    @Inject
    private Instance<V> viewInstance;

    protected Instance<V> getViewInstance() {
        return viewInstance;
    }

    public abstract V newView();
}

public abstract class AbstractElementModel<E extends AbstractElement> {}

public abstract class AbstractElementView<E extends AbstractElement, M extends AbstractElementModel> {}

public class Temp<V extends TempView, M extends TempModel> extends AbstractElement<V, M>{
    @Override
    public V newView() {
        return getViewInstance().select(TempView.class).get();//LINE X
    }
}

public class TempModel<E extends Temp> extends AbstractElementModel<E> {}

public class TempView<E extends Temp, M extends TempModel> extends AbstractElementView<E, M>{}

元素由视图和模型组成。 View 知道元素和模型,模型只知道元素(不要问这是什么模式——这不重要)。我有 AbstractElement 和 Temp。温度也可以遗传。在 Temp 中,我需要重写 newView 方法。但是,我在 LINE X 得到 not suitable method found for select。我的错误是什么?

编辑:注入和实例是

javax.enterprise.inject.Instance;
javax.inject.Inject;

您使用了很多原始类型作为类型参数。这不会很顺利。

getViewInstance() in Temp 给你 Instance<V> where V extends TempView.

viewInstance.select 适用于 Class<U> subtype,其中 U extends V(扩展 TempView)。 V 可以是 TempView 的任何子类,因此 TempView 不能替代 U,因此您不能将 Class<TempView> 传递给 select