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;