Generics GWT中的泛型多态性

Generics GWT中的泛型多态性,generics,gwt,Generics,Gwt,最后 编译器说: 找不到符号方法 addColumncom.google.gwt.user.cellview.client.TextColumn,java.lang.String 但是ModelImpl扩展了Model!!发生了什么?问题是您使用CellTable类型定义了tableImpl问题是您使用CellTable类型定义了tableImpl谢谢,但是我,您的解决方案不是多态的,我想写tableImpl=new CellTable;tableImpl=new CellTable;。我想不

最后

编译器说:

找不到符号方法 addColumncom.google.gwt.user.cellview.client.TextColumn,java.lang.String


但是ModelImpl扩展了Model!!发生了什么?

问题是您使用CellTable类型定义了tableImpl问题是您使用CellTable类型定义了tableImpl谢谢,但是我,您的解决方案不是多态的,我想写tableImpl=new CellTable;tableImpl=new CellTable;。我想不知怎么的。。。polymorphic@XXTerror在这种情况下,您可以创建一个具有泛型类型参数“T extends Model”和extends TextColumn的新类,然后重写getValue。然后构造其中一个,而不是匿名文本列。不过,您仍然需要更改tableImpl的类型。@xxt初始化字段的代码和添加列的代码被临时链接。如果它们在同一个方法中,那么要么使用更具体类型的局部变量,要么用一些T扩展模型参数化整个类。谢谢,但是我,你的解决方案不是多态的,我想写tableImpl=new CellTable;tableImpl=new CellTable;。我想不知怎么的。。。polymorphic@XXTerror在这种情况下,您可以创建一个具有泛型类型参数“T extends Model”和extends TextColumn的新类,然后重写getValue。然后构造其中一个,而不是匿名文本列。不过,您仍然需要更改tableImpl的类型。@xxt初始化字段的代码和添加列的代码被临时链接。因此,如果它们在同一个方法中,那么要么使用更特定类型的局部变量,要么使用一些T扩展模型参数化整个类
class ModelImpl extends Model {
CellTable<? extends Model> tableImpl;
tableImpl=new CellTable<ModelImpl>();
    TextColumn<ModelImpl> column = new TextColumn<ModelImpl>() {
      @Override
      public String getValue(ModelImpl object) {
        return object.getColumnValue();
      }
    };
    tableImpl.addColumn(column, "nameColumn");
public void addColumn(Column<T,?> col)
CellTable<ModelImpl> tableImpl;