Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中没有合适的泛型和HAS-A关系的名称_Java_Generics_Dependency Injection_Cdi - Fatal编程技术网

Java中没有合适的泛型和HAS-A关系的名称

Java中没有合适的泛型和HAS-A关系的名称,java,generics,dependency-injection,cdi,Java,Generics,Dependency Injection,Cdi,我有以下课程: public abstract class AbstractElement<V extends AbstractElementView, M extends AbstractElementModel> { @Inject private Instance<V> viewInstance; protected Instance<V> getViewInstance() { return viewInst

我有以下课程:

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

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

Temp
中的
getViewInstance()
提供了
Instance
其中
V扩展了TempView


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

您的代码中缺少的
实例。@lexicore抱歉,找不到。你能提供更多细节吗?你的代码有这个
私有实例viewInstance但您没有在代码段中包含
实例
。你找不到是什么意思`@我编辑了这个问题。
javax.enterprise.inject.Instance;
javax.inject.Inject;