How to extend Grid

Hi,

I’m trying to extend Grid to have a custom addColumn method.
This is the code I wrote:

public class AGrid<T> extends Grid<T> {

    public static enum ColumnType {
        TEXT,
        INTEGER_NUMBER,
        DECIMAL_NUMBER_2,
        DATE,
        DATETIME;
    }

    /* Columns. */

    public <V>Grid.Column<T,V> addColumn(ValueProvider<T,V> valueProvider, AGrid.ColumnType type, String id, String caption, String styleGenerator, double width) {
        if (null == valueProvider) {
            throw new IllegalArgumentException("Invalid 'valueProvider': null.");
        }
        if (null == type) {
            throw new IllegalArgumentException("Invalid 'type': null.");
        }
        if (MText.isBlank(id)) {
            throw new IllegalArgumentException("Invalid 'id': null or empty.");
        }
        if (MText.isBlank(caption)) {
            throw new IllegalArgumentException("Invalid 'caption': null or empty.");
        }
        if (-1 > width) {
            throw new IllegalArgumentException("Invalid 'width': lesser than -1.");
        }
        //
        AApplicationUi applicationUi = this.getApplicationUi();
        AUser currentUser = applicationUi.getUser();
        //
        Grid.Column<T,V> column = this.addColumn(valueProvider);
        //
        switch (type) {
            case TEXT:
                break;
            case INTEGER_NUMBER:
                column.setRenderer(new NumberRenderer(new DecimalFormat(currentUser.getIntegerNumberConverter().getDefaultNumberFormat(), new DecimalFormatSymbols(currentUser.getIntegerNumberConverter().getLocale()))));
                break;
            case DECIMAL_NUMBER_2:
                column.setRenderer(new NumberRenderer(new DecimalFormat(currentUser.getDecimalNumberConverter(2).getDefaultNumberFormat(), new DecimalFormatSymbols(currentUser.getDecimalNumberConverter(2).getLocale()))));
                break;
            case DATE:
                column.setRenderer(new LocalDateRenderer(currentUser.getDateConverter().getDefaultDateFormat(), currentUser.getDateConverter().getLocale()));
                break;
            case DATETIME:
                column.setRenderer(new LocalDateTimeRenderer(currentUser.getDatetimeConverter().getDefaultDatetimeFormat(), currentUser.getDatetimeConverter().getLocale()));
                break;
        }
        //
        column.setId(id);
        //
        column.setCaption(caption);
        //
        if (null != styleGenerator) {
            column.setStyleGenerator(c -> styleGenerator);
            this.getDefaultHeaderRow().getCell(id).setStyleName(styleGenerator);
        }
        //
        if (-1 < width) {
            column.setWidth(width);
        }
        //
        return column;
    }

}

but compiling it returns:

error: incompatible types: NumberRenderer cannot be converted to Renderer<? super V> and similar errors.

Thanks in advance for any suggestions.
Marco

Just in case anyone needs it: casting the newly created object (new NumberRenderer(…)) to AbstractRenderer did the trick.

Marco