Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 关于泛型有界通配符类型的混淆_Java_Generics_Bounded Wildcard - Fatal编程技术网

Java 关于泛型有界通配符类型的混淆

Java 关于泛型有界通配符类型的混淆,java,generics,bounded-wildcard,Java,Generics,Bounded Wildcard,非常简单的Java问题。此代码有一个错误: public abstract class SubTypeDependentEditor<T> implements Editor<T> { protected abstract Editor<? extends T> getEditorFor(T obj); public void edit(T obj) { Editor<? extends T> editor = ge

非常简单的Java问题。此代码有一个错误:

public abstract class SubTypeDependentEditor<T> implements Editor<T> {
  protected abstract Editor<? extends T> getEditorFor(T obj);       

  public void edit(T obj) {
    Editor<? extends T> editor = getEditorFor(obj);
    editor.edit(obj); // ERROR IS HERE
  }
}
T
设置为
Entity
,并且
getEditorFor(T obj)
负责返回
Editor
,其中
X
取决于
obj
的具体类型,并且始终是-A
T
。因此,如果您有
子依赖编辑器
getEditorFor(tobj)
obj
EntityA
时返回
Editor
,在
obj
EntityB
时返回
Editor

这有没有可能在没有警告的情况下实现

更新:

protected abstract Editor<? extends T> getEditorFor(T obj);     
受保护的摘要编辑器
到

受保护的摘要编辑器
到


受保护的抽象编辑器代码给出了什么错误?在某些地方使用通配符(
?扩展T
)而不是整个
T
的理由是什么?编译器实际上说了什么错误?方法
edit
是否在
Editor
界面中定义?编辑器的签名是什么?edit
?@chrisbunney:
类型App中的方法编辑(捕获2-of?扩展T)。编辑器不适用于参数(T)
代码给出的错误是什么?您使用通配符的理由是什么(
?扩展T
)在某些地方,而不是在整个
T
?编译器实际上说了什么错误?方法
edit
是在
编辑器
界面中定义的吗?方法
编辑器的签名是什么。edit
?@chrisbunney:
方法编辑(捕获-2-of?扩展T)在类型App.Editor中,不适用于参数(T)
protected abstract Editor<? extends T> getEditorFor(T obj);     
protected abstract Editor<? extends T> getEditorFor(T obj);
protected abstract Editor<? extends T> getEditorFor(T obj);
protected abstract Editor<? super T> getEditorFor(T obj);